初入Fragment(1)——静态加载fragment

Fragment的重要的生命周期:

onAttach():主要用于fragment关联到Activity后的参数传值

onCreate():fragment的创建,注意不是Activity的创建完毕,这个时候并不能获取到Activity中的内容

onCreateView():创建fragment要加载的View

onActivityCreated():Activity创建完毕

onStart()、onResume()、onPause()、onStop():与Activity类似

onDetach():fragment生命周期最后一个回调方法


fragment有两种使用的方式,一种是在布局文件中直接饮用,另一种是动态加载fragment

先来演示一种静态加载fragment的方法,首先展示一下工程目录结构


主界面就是MainActivity,然后创建了一个FragmentTest,这个里面就是创建的一个fragment,这个需要继承Fragment,并且我使用的是support.v4的这个包,因为这个fragment的功能更加的全面,来展示一下代码:

import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

/**
 * Created by czj01 on 2017/5/8.
 */

public class FragmentTest extends Fragment {
    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        return inflater.inflate(R.layout.fragment_list, container, false);
    }
}

里面的函数onCreateView中会传进来三个参数,我们可以使用inflater来指定我们的fragment的显示。

然后就是MainActivity中的代码段:

mport android.app.Activity;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    public void fragmentDemo(View view){
        startActivity(new Intent(this,DemoFragmentActivity.class));

    }
}

以及DemoFragmentActivity中的代码段:

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;

public class DemoFragmentActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_demo_fragment);
    }
}
这样我们的一个简单的静态加载fragment就实现了,但是需要注意的是DemoFragment的xml布局文件中,我们一定要指定这个布局的id,如下:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_demo_fragment"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.example.czj01.fragmentdemo.DemoFragmentActivity">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="在XML中使用fragment"/>

    <fragment
        android:name="com.example.czj01.fragmentdemo.FragmentTest"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        tools:layout="@layout/fragment_list">

    </fragment>

</LinearLayout>

其中的

android:id="@+id/activity_demo_fragment"
这个id是一定要设置的,不然fragment在运行的时候,会报错。



猜你喜欢

转载自blog.csdn.net/qq_29426541/article/details/71436847
今日推荐