Fragment回退栈 

类似与Android系统为Activity维护一个任务栈,我们也可以通过Activity维护一个回退栈来保存每次Fragment事务发生的变化。

如果你将Fragment任务添加到回退栈,当用户点击后退按钮时,将看到上一次的保存的Fragment。

一旦Fragment完全从后退栈中弹出,用户再次点击后退键,则退出当前Activity。

       transaction.add(R.id.right, rightFragment);

    transaction.addToBackStack(null);

 

Fragment传递参数

 

  1. Activity在构建Fragment的时候,向他传递参数setArguments(Bundle b); bundle可以携带基础数据类型,数组,以及序列化对象

  2. Activity想xml中的Fragment传递数据

    //找到xml中静态创建的Fragment

    framgent = (ContentFragment)

    getSupportFragmentManager().findFragmentByTag("fragment");

    //findFragmentById(R.id.fragment);

  3. Fragment之间传参 非常少

    通过Activity作为桥梁,获取FragmentManager.findFragmentById(Tag)获取引用;

  4. 任何的类都可以通过单例模式来获取数据

    Android组件单例(View,Fragment,Activity,Application)都不允许构造方法私有化

    必须保证该对象是单例的    

      Application由系统创建,已经保持了单例
      Activity由系统创建,也保持了单例
      但是Fragment由自己创建,并没有保持单例

      步骤如下:

    静态本类对象
      static MainActivity instance;
    公开访问方法
      public static MainActivity getInstance() {
        return instance;
      }
    在生命周期onCreate的时候 将静态本类对象赋值
     @Override
    protected void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       instance = this;
       setContentView(R.layout.activity_main);
    }

 

 

Fragment 回退栈 传递参数,点击切换图片使用Fragment ListView

 

 1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 2     xmlns:tools="http://schemas.android.com/tools"
 3     android:id="@+id/activity_main"
 4     android:layout_width="match_parent"
 5     android:layout_height="match_parent"
 6     android:orientation="horizontal"
 7     tools:context="com.example.lesson10_backtostack.MainActivity">
 8 
 9     <fragment
10         android:id="@+id/fragment2"
11         android:name="com.example.lesson10_backtostack.SingleFragment"
12         android:layout_weight="1"
13         android:layout_width="0dp"
14         android:layout_height="match_parent"/>
15 
16     <ListView
17         android:id="@+id/lv"
18         android:layout_width="0dp"
19         android:layout_weight="1"
20         android:layout_height="match_parent"/>
21 
22     <FrameLayout
23         android:id="@+id/fl_fragment"
24         android:layout_width="0dp"
25         android:layout_height="match_parent"
26         android:layout_weight="5" />
27 </LinearLayout>
activity_main.xml

相关文章: