您的位置:首页 > 移动开发 > Android开发

android——Fragment与Activity

2015-09-08 13:49 671 查看
可以把Fragment当成Activity的一个界面的一个组成部分或一种行为。Activity的界面可以完全有不同的Fragment组成,Fragment拥有自己的生命周期和接收、处理用户的事件,这样就不必在Activity写一堆控件的事件处理的代码了。更为重要的是,你可以动态的添加、替换和移除某个Fragment。一个fragment必须总是嵌入在一个activity中,同时fragment的生命周期受activity而影响。

Fragment使用:

1.创建一个Fragment,实现onCreate()、onCreateView()、onPause()等一些方法。

2.向Fragment增加一个用户界面。

要想提供一个layout布局文件给Fragment,必须实现 onCreateView()回调方法。这个在Fragment要绘制界面时,系统调用。

 public View
onCreateView(LayoutInflater
inflater,
ViewGroup container,

            BundlesavedInstanceState) {

        return
inflateAndSetupView(inflater,container,
savedInstanceState,

               
R.layout.contact_tile_list);

    }

3.向Activity增加Fragment

(1)在Activity中声明布局文件

在Activity的布局文件中将Fragment作为一个子标签加入

<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"

    android:orientation="horizontal"

    android:layout_width="match_parent"

    android:layout_height="match_parent">

    <fragment
android:name="com.example.news.ArticleListFragment"

           
android:id="@+id/list"

           
android:layout_weight="1"

           
android:layout_width="0dp"

           
android:layout_height="match_parent" />

    <fragment
android:name="com.example.news.ArticleReaderFragment"

           
android:id="@+id/viewer"

           
android:layout_weight="2"

           
android:layout_width="0dp"

           
android:layout_height="match_parent" />

</LinearLayout>

(2)编码方式向一个存在的ViewGroup增加Fragment

为了确保在Activity中处理Fragment必须使用FragmentTransaction的API,可以这样获得FragmentTransaction的实例:

FragmentManager fragmentManager = getFragmentManager();

FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();

//这时可以通过add方法把Fragment加入到指定的ViewGroup中

ExampleFragment fragment =new ExampleFragment();

//第一个参数是存在的指定的容器的id,第二个参数是要加进去的Fragment

fragmentTransaction.add(R.id.fragment_container,fragment);

//一旦你使用 FragmentTransaction改变了东西,一定要调用commit()方法才能起作用

fragmentTransaction.commit();

4.管理Fragment

(1)取出一个Fragment通过findFragmentById()或findFragmentByTag();

(2)使用 popBackStack() 方法,从后台堆栈中弹出一个fragment;

(3)为后台堆栈注册能监听改变的监听器, addOnBackStackChangedListener();
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: