必威-必威-欢迎您

必威,必威官网企业自成立以来,以策略先行,经营致胜,管理为本的商,业推广理念,一步一个脚印发展成为同类企业中经营范围最广,在行业内颇具影响力的企业。

需要使用FragmentManager.,《Fragment详解之二必威:

2019-09-19 00:20 来源:未知

从地点的布局能够看出来,是间接在布局写死了fragment,就象是用积木拼出了二个完好无缺的布局,不过每一块都以永世不可能转换的,这种用法在三哥大开采中并不平时利用,终归手提式有线电话机荧屏尺寸的限定,这种使用场景并不分布,不过平板开辟的妙龄应该对这种用法极度的询问,把不相同成效封装成模块进行支付,使用的时候平素拼装,省时省力。

二、add()、replace()、remove()使用方法身体力行

下边就由此例子来拜见以上多少个函数的使用办法呢。
职能图如下:

  • 点击“ADD Fragment1”,在将Fragment1添加到Activity的container中;
  • 点击“ADD Fragment2”,将Fragment2添加到Activity的container中;
  • 点击“Remove Fragment2”,将Fragment2的实例从container中移除,移除之后,就展现出其江湖的fragment1的视图出来了。
  • 再点击”replace Fragment1”,将container中的视图移除,然后加多上fragment2的视图。 

必威 1

那今后大家从头初步创设这些工程:

View listView =getActivity().findViewById(R.id.list);

页面部分:

left_fragment.xml

<LinearLayout xmlns:andro android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <Button android: android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:text="@string/button"/></LinearLayout>

right_fragment.xml

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:andro android:layout_width="match_parent" android:layout_height="match_parent" android:background="#00ff00" android:orientation="vertical"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:textSize="20sp" android:text="This is right fragment"/></LinearLayout>

从此,在主布局中引进下面多少个fragment,如同使用普通控件同样。

FragmentManager推荐使用support包中类,可以来协作非常的低的本子,境遇报错的妙龄,先看看使用的类是不是有有毛病。

2、回降栈(back stack)状态退换监听

FragmentManager还为大家提供了监督检查回降栈状态改换的章程:

FragmentManager::addOnBackStackChangedListener(listener);//添加监听器
FragmentManager::removeOnBackStackChangedListener(listener);//移除监听器

经过加多监听器,就能够在回落栈内容更换时,及时接受布告;
我们在下面代码的根底上,在MainAcitivy中为FragmentManager加多一个监听器,当回落栈状态退换时,打出一个LOG。具体落到实处如下:
(1)、OnCreate()中:
为fragmentManger加多贰个监听器:

FragmentManager manager = getSupportFragmentManager();
listener = new FragmentManager.OnBackStackChangedListener() {

    @Override
    public void onBackStackChanged() {
        // TODO Auto-generated method stub
        Log.d("qijian","backstack changed");
    }
};
manager.addOnBackStackChangedListener(listener);

(2)、当onDestory()准将监听器remove掉:

protected void onDestroy() {
    // TODO Auto-generated method stub
    super.onDestroy();
    FragmentManager manager = getSupportFragmentManager();
    manager.removeOnBackStackChangedListener(listener);
}

世家自然要注意,不管是这里的回落栈的监听还是另外的监听器,在页面临应的销毁时,都要记得remove掉,不然会导致页面不自由,那也是促成OOM的主题素材之一。

那样当回降栈内容现身转移时,变会打LOG出来,如图:

必威 2

源码在文章尾部给出

•必得最终调用 commit()
•若是增加四个fragment到同一个容器, 那么丰硕的顺序决定了它们在view hierarchy中显得的相继

运营效果图:

必威 3

android:layout_height="match_parent" />

2、通过FragmentTransaction举办增多,删除,替换等操作

1、新建四个fragment1.xml 和 fragment2.xml:

从功用图中也得以见见,那五个XML什么都并未有,只是透过背景象和文字来分别当前是哪个Fragment的XML布局文件而已,他们的布局代码如下:

fragment1.xml:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#ff00f0"
    android:orientation="vertical" >

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="This is fragment 1"
        android:textColor="#000000"
        android:textSize="25sp" />

</LinearLayout>

fragment2.xml:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#ffff00"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/fragment2_tv"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="This is fragment 2"
        android:textColor="#000000"
        android:textSize="25sp" />

</LinearLayout>

复制代码 代码如下:

动态加多Fragment

的确开拓中, 比很多的Fragment是急需被动态增长进去的. 我们后天就兑现八个简单的加载, 点击左边按键, 替换左边的Fragment

前段时间大家新建另外一套左边的Fragment.

right2_fragment.xml

<LinearLayout xmlns:andro android:layout_width="match_parent" android:layout_height="match_parent" android:background="#ffff00" android:orientation="vertical"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:textSize="20sp" android:text="This is another right fragment"/></LinearLayout>

Right2Fragment.java

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

好了, 接下来大家又要求修改大家的activity_main.xml中的代码了. 如下:

<LinearLayout xmlns:andro android: android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="match_parent"> <fragment android: android:name="com.junzaivip.fragmentdemo.LeftFragment" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1"/> <FrameLayout android: android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1"> </FrameLayout></LinearLayout>

粗略表明: 看到改换是将中间的fragment替换来将来的FrameLayout,为何吗? 由于此地仅供给在布局中归入三个Fragment, 所以适合最简便易行的FramLayout布局.

上面大家来给FrameLayout里增添内容, 达成动态效果.

public class MainActivity extends AppCompatActivity implements View.OnClickListener { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button button =  findViewById(R.id.button_left); button.setOnClickListener; replaceFragment(new RightFragment; } @Override public void onClick { switch ){ case R.id.button_left: replaceFragment(new Right2Fragment; break; default: break; } } private void replaceFragment(Fragment fragment){ FragmentManager fragmentManager = getSupportFragmentManager(); FragmentTransaction transaction = fragmentManager.beginTransaction(); transaction.replace(R.id.right_layout, fragment); transaction.commit(); }}

解读: 首先给左侧按钮增加点击事件, 私下认可运维onCreate()之后, 首先replaceFragment()方法动态增加RightFragment. 当点击按键之后, 再度调用replaceFragment()方法动态增添Right2Fragment.

}

1、获取FramgmentTransaction, Fragment的事务管理类FragmentTransaction transaction = fm.beginTransaction();

一、概述

您也许感兴趣的小说:

  • Android应用UI开辟中Fragment的遍及用法小结
  • Android应用开垦中Fragment存款和储蓄成效的为主用法
  • Android Fragment概述及用法
  • Android基础之Fragment与Activity交互详解
  • Android中fragment嵌套fragment难点消除措施
  • Android Fragment 基本精晓(图像和文字介绍)
  • android开荒教程之完成滑动关闭fragment示例
  • Android使用Fragment创设万能页面切换框架
  • Android应用开采中Fragment的静态加载与动态加载实例
  • Android中Fragment的大旨用法示例总计
Java代码:

LeftFragment.java

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

RightFragment.java

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

两份代码基本相似, LayoutInflater 的inflate方法将定义好的布局动态加载进来.

接下去在activity_main.xml中校刚刚写好的fragment.xml加载进来.

<LinearLayout xmlns:andro android: android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="match_parent"> <fragment android: android:name="com.junzaivip.fragmentdemo.LeftFragment" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1"/> <fragment android: android:name="com.junzaivip.fragmentdemo.RightFragment" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1"/></LinearLayout>

android:name 属性来显示指明要抬高的Fragment类名, 注意这里明确是包的全名.

4、Activity与Fragment之间互相通讯

中间FrameLayout正是填充Fragment的容器,当要往容器中增多我们供给的Fragment时,必要多少个步骤:

1、《Fragment详解之一——概述》
2、《Fragment详解之二——基本选用办法》
3、《Fragment详解之三——管理Fragment(1)》
4、《Fragment详解之四——管理Fragment(2)》
5、《Fragment详解之五——Fragment间参数字传送递》
6、《Fragment详解之六——怎么样监听fragment中的回落事件与什么保存fragment状态》

明日执教一下Fragment的决定,首假使切换View和页面替换等操作。还恐怕有就是什么获得Fragment的管理对象,以及与Activity的通讯情势。

1、管理Fragment
要在activity中管理fragment,必要动用FragmentManager. 通过调用activity的getFragmentManager()获得它的实例.

运营效果:

必威 4

完毕这里, 当大家轮换掉以前的fragment, 不过大家还希望通过重临按键重临, 可是眼前我们点击重临开关, 开采是平素退出程序, 那么怎么优化呢?

修改代码:

必威 5

解读:FragmentTransaction提供的addToBackStack()方法, 可以用来将四个事务增添到再次回到栈中, 基本上能用三个名字用于描述重临栈的图景, 一般传入null就可以. 所以只须要丰盛那句代码.transaction.addToBackStack;

源码:

接下来,须求创设容纳Fragment布局文件的Fragment类。该类extends Fragment,供给重写onCreateView()方法,在里面引进上边的布局文件;

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:andro xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="com.example.lzp.MainActivity" android:orientation="vertical"> <FrameLayout android: android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1"/> <RadioGroup android: android:layout_width="match_parent" android:layout_height="50dp" android:orientation="horizontal"> <RadioButton android: android:layout_width="0dp" android:layout_weight="1" android:layout_height="match_parent" android:text="1"/> <RadioButton android: android:layout_width="0dp" android:layout_weight="1" android:layout_height="match_parent" android:text="2"/> <RadioButton android: android:layout_width="0dp" android:layout_weight="1" android:layout_height="match_parent" android:text="3"/> </RadioGroup></LinearLayout>

日前给我们有些看了要怎么选拔fragment,在上篇中,我们也最初接触到了add,replace这一个fragment操作的函数,上面就再详尽讲讲怎么着管理Fragment页面吧。

复制代码 代码如下:

必威 6

android:layout_width="0dp"

3、操作结束,提交业务,假设不付出,操作无效。 transaction.commit();transaction.commitAllowingStateLoss();稍后再作证那二种提交业务的方法的例外。

三、有关回滚——FragmentTransaction

每一个事情都以还要要推行的一套变化。能够在二个加以的业务中安装你想举办的持有更换,使用诸如 add()、remove()和 replace()。然后, 要给activity应用工作,必需调用 commit()。

新建项目Fragment德姆o, 将三个显示屏分成两部分. 右侧是按键, 侧边呈现文本.

android:layout_width="0dp"

package com.example.lzp;import android.support.v4.app.Fragment;import android.support.v4.app.FragmentActivity;import android.support.v4.app.FragmentManager;import android.support.v4.app.FragmentTransaction;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.widget.RadioGroup;public class MainActivity extends FragmentActivity implements RadioGroup.OnCheckedChangeListener{ // 负责全局的FragmentManager, 建议使用support包中的FramengManager类 private FragmentManager fm; private Fragment oneFragment, twoFragment, threeFragment; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); fm = getSupportFragmentManager(); RadioGroup tabRadio = (RadioGroup) findViewById(R.id.tab_radio); tabRadio.setOnCheckedChangeListener; if (oneFragment == null){ oneFragment = new OneFragment(); } fm.beginTransaction().add(R.id.fragment_container, oneFragment).commit(); } @Override public void onCheckedChanged(RadioGroup group, int checkedId) { FragmentTransaction transaction = fm.beginTransaction(); switch (checkedId){ case R.id.one: transaction.replace(R.id.fragment_container, oneFragment); break; case R.id.two: if (twoFragment == null){ twoFragment = new TwoFragment(); } transaction.replace(R.id.fragment_container, twoFragment); break; case R.id.three: if (threeFragment == null){ threeFragment = new ThreeFragment(); } transaction.replace(R.id.fragment_container, threeFragment); break; default: break; } transaction.commit(); }}

相关小说:

地点是怎么将三个fragment替换为另一个,并在后台旅舍中保存在此之前的景况。在那么些例子中,newFragment替换了当下layout容器中的由Sportage.id.fragment_container标记的fragment。通过调用 addToBackStack(), replace事务被保留到back stack,因而顾客能够回落事务,并因此按下BACK按钮带回前八个fragment。

  1. Fragment的简要使用.

transaction.commit();

地方的代码特别轻松,自定义多少个Fragment,暗许增多第一个Fragment,然后通过单选框的选项生成来增多不相同的fragment。

2、创设相应的Fragment类:Fragment1和Fragment2

Fragment1:

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

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

}

与上一篇同样,也只是在onCreateView()时再次回到对应的布局。同样,Fragment2的定义如下:

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

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

若果增加多个变化到工作(举例add()或remove())并调用addToBackStack(),然后在您调用commit()之前的全部应用的扭转会被视作四个单个事务加多到后台仓库,BACK按钮会将它们一齐回落。增添变化到 FragmentTransaction的依次不重要, 除以下两样:

案例最后效果:

return view;

先是大家要在布局中选用FrameLayout,设置相应宽高档属性,它就是大家要加多内容的容器,如上面包车型地铁代码

2、FragmentTransaction

相似用来对脚下的Fragment举办管理,包罗add,replace,remove;
常用的指向Fragment的点子有:

//将一个fragment实例添加到Activity的最上层
add(int containerViewId, Fragment fragment, String tag);
//将一个fragment实例从Activity的fragment队列中删除
remove(Fragment fragment);
//替换containerViewId中的fragment实例,注意,它首先把containerViewId中所有fragment删除,然后再add进去当前的fragment
replace(int containerViewId, Fragment fragment);

还可能有hide()、show()、detach()、attach()那几个函数,大家下篇再讲,这节先对Fragment的用法有多个开头摸底;

复制代码 代码如下:

成就动态拉长总结:

开创待加多的fragment实例获取FragmentManager, 在活动中调用getSupportFragmentManager()方法;开启三个政工, 通过beginTransaction()方法开启;向容器内增进大概替换fragment, 一般采用replace()方法达成, 供给传入容器的id和待增添的fragment实例.提交业务, 调用commit()方法来实现.

3、在Fragment中模拟Activity的重回栈

在上一篇中简易介绍了Fragment,未来来三个简约的用法

3、MainActivity的布局

从上边的的功能图中也能够观望轮廓的布局,首先是多个Button,最下方是二个FrameLayout布局,它是用来做为container动态盛装fragment的;它就好像贰个占位符,你设置多大,它里面包车型客车fragment就最大能有多大。记住,fragment也是Activity中的一个家常控件而已,只可是它能够像Activity同样用于体现的同偶然间仍是能够用来盛装另外控件!作为fragment的容器,即能够用FrameLayout也足以用LinearLayout只怕RelativeLayout,都是同一的。activity_main.xml的布局代码如下:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <Button
        android:id="@+id/btn_add_frag1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="ADD  Fragment1" />

    <Button
        android:id="@+id/btn_add_frag2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="ADD  Fragment2" />

    <Button
        android:id="@+id/btn_remove_frag2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Remove  Fragment2" />

    <Button
        android:id="@+id/btn_repalce_frag1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="replace  Fragment1" />

    <FrameLayout
        android:id="@+id/fragment_container"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>

</LinearLayout>

从 FragmentManager 获得一个FragmentTransaction实例:

重大内容:Fragment的大约利用Fragment中动态增加

Button button=(Button) activity.findViewById(R.id.button1);

Fragment供给与FrameLayout结合使用,FrameLayout起到了容器的效果。

1、FragmentTransaction事务回滚使用方式:

上一些,大家讲了关于加多、删除Fragment的操作,想将上二遍commit的操作再次回到时,要咋做吧。那就须求FragmentTransaction的回滚功用了。
要采用回滚作用,只须要要使用上边八个代码:
在transaction.commit()此前,使用addToBackStack()将其增添到回降栈中。

transaction.addToBackStack(String tag);

在须要回落时,使用popBackStack()将最上层的操作弹出回降栈。

manager.popBackStack();

此处的popBackStack()是弹出私下认可的最上层的栈顶内容。
当栈中有多层时,大家能够根据id或TAG标记来钦定弹出到的操作所在层。函数如下:

void popBackStack(int id, int flags);
void popBackStack(String name, int flags);

其中

  • 参数int id是当提交改造时transaction.commit()的重回值。
  • 参数string name是transaction.addToBackStack(String tag)中的tag值;
  • 至于int flags有多少个取值:0或FragmentManager.POP_BACK_STACK_INCLUSIVE;
  • 当取值0时,表示除了参数一内定这一层以上的全数层都退出栈,钦赐的这一层为栈顶层; 
  • 当取值POP_BACK_STACK_INCLUSIVE时,表示连着参数一钦赐的这一层一同退出栈; 
  • 而外那多少个函数,还恐怕有上面多少个函数:有关他们的采用,大家在那小片段结尾时会提到
popBackStackImmediate()
popBackStackImmediate(String tag)
popBackStackImmediate(String tag, int flag)
popBackStackImmediate(int id, int flag)

上边我们就因而二个例子来上课一下关于回落栈中的操作进程:

先看下效果图:

必威 7

完全流程是那样的:
1、每一个将Fragment1,2,3,4增加到窗口中,在抬高时,每增添二个Fragment要采用transaction的addToBackStack将此番操作加入到回落栈中。
2、然后点击"PopBackStack"方法,将栈顶最上层的操作回降。退将最终贰回增加回降出来,呈现Fragment3.
3、点击“ADD Fragment4”将栈还原到1,2,3,4依次ADD进栈的动静,即操作1完结后的栈状态,然后点击“BackToStack2_0”,其实调用的点子是:

manager.popBackStack("fragment2",0);//方法一,通过TAG回退

从此处能够看到,要回降到增多ADD Fragment2的事态,注意最后三个参数,这里设为0,证明,要回降ADD Fragment2的之后的操作,将ADD Fragment2的操作置为栈顶。从效果图中也足以见见,点击后的视图在Fragment2的职责
4、最终依旧是先点击"Add Fragment3"和"ADD Fragment4",将栈还原到操作1完毕后的栈状态。然后点击“BackToStack2_INCLUSIVE”;其调用的不二诀窍是:

manager.popBackStack("fragment2",FragmentManager.POP_BACK_STACK_INCLUSIVE);//方法一,通过TAG回退

此处与地方的主要分歧点在于第贰个参数,这里设置为POP_BACK_STACK_INCLUSIVE,即在出栈时有关ADD Fragment2的操作一块出栈,放在栈顶的是ADD Fragment1的操作,所以放在分界面上正是展现的是Fragment1的视图。
下边大家看看实际达成:
(1)、首先,与上部分雷同,先增加七个Fragment,并用背景象和文字来分别。那有些代码大家就不讲了。
关键看看点击按键的代码处理办法。
(2)、首先是增添Fragment1:

Fragment1 fragment1 = new Fragment1();
stackID1 = addFragment(fragment1,"fragment1");

其中:

private int stackID1,stackID2,stackID3,stackID4;

private int addFragment(Fragment fragment,String stackName){
    FragmentManager manager = getSupportFragmentManager();
    FragmentTransaction transaction = manager.beginTransaction();
    transaction.add(R.id.fragment_container,fragment);
    transaction.addToBackStack(stackName);
    return transaction.commit();
}

先是,这里的stackID1,stackID2,stackID3,stackID4是用来保存每一遍commit()后赶回的Transaction的ID值。在void popBackStack(int id, int flags);时,当中的参数id正是那么些值
下一场在历次ADD操作后,利用addToBackStack(string name)将每趟ADD操作增多进回降栈中;
同一,加多Fragment2的代码如下,增加Fragment3,Fragment4的点子同理

Fragment2 fragment2 = new Fragment2();
stackID2 = addFragment(fragment2,"fragment2");

(3)、然后是回降栈顶内容:

private void popBackStack(){
    FragmentManager manager = getSupportFragmentManager();
    manager.popBackStack();
}

(4)、接着是点击BackToFrag2_0按键的从头到尾的经过,此间有二种格局达成,一种是钦定TAG,一种是应用Commit()再次来到的ID

private void popBackStackToFrag2_0(){
    FragmentManager manager = getSupportFragmentManager();
    manager.popBackStack("fragment2",0);//方法一,通过TAG回退
    // manager.popBackStack(stackID2,0);//方法二,通过Transaction ID回退
}

(5)、最终是点击BackToFrag2_INCLUSIVE开关的代码:

private void popBackStackToFrag2_Inclusive(){
    FragmentManager manager = getSupportFragmentManager();
    manager.popBackStack("fragment2",FragmentManager.POP_BACK_STACK_INCLUSIVE);//方法一,通过TAG回退
// manager.popBackStack(stackID2,FragmentManager.POP_BACK_STACK_INCLUSIVE);//方法二,通过Transaction ID回退
}

好了,到此处,有关回滚的主导选拔就驾鹤归西了,要求要留意的是:
使用popBackStack()来弹出栈内容的话,调用该办法后会将东西操作插入到FragmentManager的操作队列,独有当轮询到该事物时工夫施行。要是想马上试行事物的话,须求动用上面多少个照管的艺术:

popBackStackImmediate()
popBackStackImmediate(String tag)
popBackStackImmediate(String tag, int flag)
popBackStackImmediate(int id, int flag)

一样地,activity能够经过从FragmentManager获得贰个到Fragment的援引来调用fragment中的方法,使用findFragmentById() 或 findFragmentByTag()。

RightFragment rightFragment=(RightFragment) getFragmentManager().findFragmentById(R.id.right_fragment);

TAG标签:
版权声明:本文由必威发布于必威-编程,转载请注明出处:需要使用FragmentManager.,《Fragment详解之二必威: