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;
    }

}

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

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

安卓FragmentManager中FragmentTransaction的介绍

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

FragmentManager及FragmentTransaction浅析

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

FragmentTransaction

  • 2016年08月11日 14:23
  • 10.33MB
  • 下载

FragmentTransaction使用全解

  • 2017年03月03日 17:50
  • 24.31MB
  • 下载

使用FragmentManager托管AlertDialog

android 新手,学习笔记.在andorid5.0之后,Google重新设计了系统的对话框, 相比旧系统版本的对话框,新版的对话框漂亮了很多,如果不限定版本,所有版本都能使用新特性, 则需要使用A...

FragmentManager

为了管理Activity中的fragments,需要使用FragmentManager.   为了得到它,需要调用Activity中的getFragmentManager()方法。 ...

FragmentManager讲解

转载 http://longshuai2007.blog.163.com/blog/static/142094414201362631129902/FragmentManager讲解为了管理Acti...

FragmentManager冲突问题

场景 MainActivity继承自Activity,布局文件为ViewPager,嵌套几个Fragment。 Fragment、ViewPager、FragmentPagerAdapter均使用自v...

get${XXX}FragmentManager()的区别

${XXX}为何会有这么多get${XXX}FragmentManager,它们存在目的是什么呢FragmentActivity getSupportFragmentManager getFragme...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:FragmentManager与FragmentTransaction
举报原因:
原因补充:

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