Android Fragment

来源:互联网 发布:淘宝怎么修改退货金额 编辑:程序博客网 时间:2024/05/17 04:18

为了让界面可以在平板上更好地展示,Android在3.0版本引入了Fragment(碎片)功能,它非常类似于Activity,可以像Activity一样包含布局。

Fragment的生命周期:

  • onAttach方法:Fragment和Activity建立关联的时候调用。
  • onCreateView方法:为Fragment加载布局时调用。
  • onActivityCreated方法:当Activity中的onCreate方法执行完后调用。
  • onDestroyView方法:Fragment中的布局被移除时调用。
  • onDetach方法:Fragment和Activity解除关联的时候调用。

public class Fragment1 extends Fragment {public static final String TAG = "Fragment1"; @Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {Log.d(TAG, "onCreateView");return inflater.inflate(R.layout.fragment1, container, false);} @Overridepublic void onAttach(Activity activity) {super.onAttach(activity);Log.d(TAG, "onAttach");} @Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);Log.d(TAG, "onCreate");} @Overridepublic void onActivityCreated(Bundle savedInstanceState) {super.onActivityCreated(savedInstanceState);Log.d(TAG, "onActivityCreated");} @Overridepublic void onStart() {super.onStart();Log.d(TAG, "onStart");} @Overridepublic void onResume() {super.onResume();Log.d(TAG, "onResume");} @Overridepublic void onPause() {super.onPause();Log.d(TAG, "onPause");} @Overridepublic void onStop() {super.onStop();Log.d(TAG, "onStop");} @Overridepublic void onDestroyView() {super.onDestroyView();Log.d(TAG, "onDestroyView");} @Overridepublic void onDestroy() {super.onDestroy();Log.d(TAG, "onDestroy");} @Overridepublic void onDetach() {super.onDetach();Log.d(TAG, "onDetach");} }
打印日志:

点击home键,打印日志:

再重新进入进入程序,打印日志:

点击back键退出程序,打印日志:

动态添加Fragment主要分为4步:

1.获取到FragmentManager,在Activity中可以直接通过getFragmentManager得到。

2.开启一个事务,通过调用beginTransaction方法开启。

3.向容器内加入Fragment,一般使用replace方法实现,需要传入容器的id和Fragment的实例。

4.提交事务,调用commit方法提交。

Fragment1类返回布局实例:

public class Fragment1 extends Fragment { @Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {return inflater.inflate(R.layout.fragment1, container, false);} }

在activity中:

Fragment1 fragment1 = new Fragment1();getFragmentManager().beginTransaction().replace(R.id.main_layout, fragment1).commit();





0 0
原创粉丝点击