FragmentManager与FragmentTransaction

原创 2017年01月02日 21:33:00

Activity管理Fragment主要依赖于FragmentManager
FragmentManager主要有一下几个功能:
1、使用findFragmentById()或findFragmentByTag()方法来获取指定Fragment。
2、调用popBackStack()方法将Fragment从后台栈中弹出(模拟用户按下BACK按键)。
3、调用addOnBackStackChangeListener()注册一个监听器,用于监听后台栈的变化。
**如果需要添加、删除、替换Fragment,则需要借助FragmentTransaction对象,FragmentTransaction代表Activity对Fragment执行多个改变。

提示:FragmentTransaction也被翻译成Fragment事务。与数据库事务类似的是,数据库事务代表了底层数组的多个更新操作;而Fragment事务代表了Activity对Fragment执行多个改变操作。
可以通过FragmentManager来获得FragmentTransaction:

        FragmentManager fragmentManager=getFragmentManager();
        FragmentTransaction fragmentTransaction=fragmentManager.beginTransaction();

每个FragmentTransaction可以包含多个对Fragment的修改,比如包含调用了多个add()、remove()、和replace()操作,最后调用commit()方法提交事务。

Maintivity:

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }
}

LeftFragment:

public class LeftFragment extends Fragment{
    private Button btn_1;
    private Button btn_2;
    private Button btn_3;
    private FragmentTransaction fragmentTransaction;
    private FragmentManager fragmentManager;
    private RightFragment rightFragment;
    @Override
    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        fragmentManager=getFragmentManager();
        fragmentTransaction=fragmentManager.beginTransaction();
        fragmentTransaction.add(R.id.rightfragment, new RightFragment());
        fragmentTransaction.commit();
    }
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View view=inflater.inflate(R.layout.left_fragment, container,false);
        btn_1=(Button) view.findViewById(R.id.btn_1);
        btn_2=(Button) view.findViewById(R.id.btn_2);
        btn_1.setOnClickListener(listener);
        btn_2.setOnClickListener(listener);
        return view;
    }
    @Override
    public void onPause() {
        // TODO Auto-generated method stub
        super.onPause();
    }
    private View.OnClickListener listener=new View.OnClickListener() {

        public void onClick(View v) {
            fragmentTransaction=fragmentManager.beginTransaction();
            switch (v.getId()) {
            case R.id.btn_1:
                fragmentTransaction.replace(R.id.rightfragment, new RightFragment1());

                break;

            case R.id.btn_2:
                fragmentTransaction.replace(R.id.rightfragment, new RightFragment2());

                break;
            default:

                break;
            }
            fragmentTransaction.commit();       
        }


    };

}

RightFragment:

public class RightFragment extends Fragment{
    @Override
    public void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);

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

}

RightFragment1:

public class RightFragment1 extends Fragment{
    @Override
    public void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);

    }
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View view=inflater.inflate(R.layout.right_fragment1, container, false);
        return view;
    }

}

RightFragment2:

public class RightFragment2 extends Fragment{
    @Override
    public void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);

    }
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View view=inflater.inflate(R.layout.right_fragment2, container, false);
        return view;
    }

}
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

FragmentManager及FragmentTransaction浅析

简单的介绍了下FragmentManager以及FragmentTransaction的实现原则

Fragment的系列解析之-------Fragment、FragmentManager、FragmentTransaction中的方法

一、Fragment对象1.void setArguments(Bundle args); 这个函数为Fragment提供构造参数(也就是数据),参数以Bundle类型封装。因为官方不建议把数据的传递...

安卓FragmentManager中FragmentTransaction的介绍

学习过程中看到的文章,讲的还不错,转载至此顺便整理了一下行文格式,感谢作者,文末放原文链接。 FragmentManage: FragmentManager能够实现管理activity...

FragmentTransaction

  • 2016-08-11 14:23
  • 10.33MB
  • 下载

FragmentTransaction使用全解

  • 2017-03-03 17:50
  • 24.31MB
  • 下载

fragmentManager Androird对Fragemt的管理

fragmentManager Androird对Fragemt的管理4/23/2016 2:35:13 PM 这是本人自入行以来的第一篇技术博客,若有不当之处还烦请各位看官积极指出我会加以订正...

Android类参考---FragmentManager

1. 继承关系 java.lang.Object     |____android.app.FragmentManager 2. 类概要 这个类提供了与Activity内部的Fragment对...

FragmentManager详解

很久没去用fragment了,渐渐的开始忘记了。今天恰好遇见同事使用fragment的不太好的理解,导致程序发生崩溃的错误,我重新对fragment进行了审视。我会通过我解决问题的方式,将我理解fra...

FragmentManager findFragmentById 返回null

关于FragmentManager findFragmentById 返回null 先看Fragment的两种生成方式 一.用xml标签生成 在fragment的宿主activity中添...

选项卡FragmentManager与Radiogroup的编写

实现选项卡的方式有很多,如何利用FragmentManager和Radiogroup来写一个选项卡呢??? 1.我们准备好布局先,activity_main_layout 布局里面...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)