一、Fragment生命周期
Fragment的生命周期Fragment的生命周期和Activity的生命周期非常像,比Activity多了onAttach()、onCreateView()、onActivityCreate、onDestroyView、onDetach方法
- onAttach方法是在和Activity建立连接的时候调用的,并返回绑定的Activity,一般可以做像this.mActivity=activity操作
- onCreateView当Fragment加载布局时候用的
-onActivityCreate是当托管的Activity的被创建的时候被调用的 - onDetroyView销毁视图的时候会被调用,但是此时还未和Activity解除绑定,可通过onCreateView恢复,一般是在ViewPager+Fragment的时候使用。
- onDetach当与Activity解绑的时候使用
Fragment的生命周期是由Activity的FragmentManager的管理的并不是由系统管理的
推荐阅读Fragment不为人知的细节
二、静态加载Fragment
(1)用法简介
- 继承Fragment类,可以重写onAttach,onCreate,onCreateView等方法
- 在Activity的布局文件中声明自己定义的Fragment
(2)代码示例
Fragment代码
public class AFragment extends Fragment {
public View onCreateView(LayoutInflater inflater, ViewGroup parent, Bundle saveInstanceState){
View view=inflater.inflate(R.layout.a_fragment_layout,parent);
return view;
}
}
布局文件代码
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:gravity="center|top"
android:layout_width="match_parent"
android:layout_height="match_parent">
<fragment
android:id="@+id/a_fragment"
android:name="com.jty.myapplication25.AFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</LinearLayout>
运行结果
静态加载三、动态加载
(1)用法说明
- 继承Fragment类,实现onAttach,onCreate,onCreateView等方法
- 通过getSupportFragmentManger获取FragmentManager对象
- 通过LayoutManager的beginTranscation获取FragmentTransaction对象
- 通过FragmentTransaction对象的add方法加载Fragment,replace方法切换Fragment,需要传进去父容器的id和Fragment的对象
-可以通过FragmentTransaction的addToBackFragment()方法允许通过返回键返回上一个Fragment - 最后一定要调用Fragment Transaction的commit方法
(2)代码示例
AFragment(BFragment一样)
public class AFragment extends Fragment {
public View onCreateView(LayoutInflater inflater, ViewGroup parent, Bundle saveInstanceState){
View view=inflater.inflate(R.layout.a_fragment_layout,null);
return view;
}
}
Activity中的代码
public class MainActivity extends AppCompatActivity {
FragmentTransaction transaction;
FragmentManager manager;
private static final String A_FRAGMENT="1";
private static final String B_FRAGMENT="2";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
manager=getSupportFragmentManager();
}
public void click1(View v){
transaction=manager.beginTransaction();
Fragment fragment=manager.findFragmentByTag(A_FRAGMENT);
if(fragment==null){
fragment=new AFragment();
transaction.replace(R.id.parent1,fragment,A_FRAGMENT);
transaction.commit();
}
}
public void click2(View v){
transaction=manager.beginTransaction();
Fragment fragment=manager.findFragmentByTag(B_FRAGMENT);
if(fragment==null){
fragment=new BFragment();
transaction.replace(R.id.parent1,fragment,B_FRAGMENT);
transaction.commit();
}
}
}
运行效果
点击AFragment按钮切换到AFragment四、Fragment+ViewPager
几篇讲解:
网友评论