记录一些fragment的知识点

记录一些自己理解的fragment的知识点,有不对,麻烦请指出,我会改的。

1、 activityfragemnt的交互数据,fragemnt数据传递给activity,一般是fragment定义接口,并在onAttach()中检查activity实现了没。要传递数据的时候,fragment调用接口,activity实现接口的方法,把fragment传递过来的数据拿出来使用;activity传递数据给fragment的时候,一般是findfragmentbyId或者直接用fragment的实例,及new出来的对象,调用fragment的方法。

2、 创建framgent要继承Fragment 类,有ui界面加载必须在oncreatView方法中加载xml

    public View onCreateView(LayoutInflater inflater, ViewGroup container,  

                             Bundle savedInstanceState) {  

        return inflater.inflate(R.layout.example_fragment, container, false);  

    }  

  传入onCreateView()container参数是你的fragmentlayout将被插入的父ViewGroup(来自activitylayout) savedInstanceState 参数是一个Bundle, 如果fragment是被恢复的,它提供关于fragment的之前的实例的数据,

inflate()
方法有3个参数:

  • 想要加载的layout的resource ID.
  • 加载的layout的父ViewGroup.
    传入container是很重要的, 目的是为了让系统接受所要加载的layout的根view的layout参数,
    由它将挂靠的父view指定.
  • 布尔值指示在加载期间, 展开的layout是否应当附着到ViewGroup (第二个参数).

 

3、 fragment添加到activity

FragmentManager fragmentManager =getFragmentManager();

FragmentTransaction fragmentTransaction =fragmentManager.beginTransaction(); 

ExampleFragment fragment = newExampleFragment();

fragmentTransaction.add(R.id.fragment_container,fragment);//可以replace替换已经加载的fagment。

fragmentTransaction.commit()

4、 可以使用addOnBackStackChangeListener()注册一个监听后台堆栈变化的listener

5、 在调用commit()之前, 可能想调用addToBackStack(),将事务添加到一个fragment事务的backstack. 这个back stackactivity管理, 并允许用户通过按下 BACK按键返回到前一个fragment状态

// Create new fragment and transaction

Fragment newFragment =newExampleFragment();

FragmentTransaction transaction=getFragmentManager().beginTransaction();

// Replace whatever is inthefragment_container view with this fragment,

// and add the transaction to thebackstack

transaction.replace(R.id.fragment_container,newFragment);

transaction.addToBackStack(null);

// Commit the transaction

transaction.commit();

 

这样添加的的newFragment之后,按返回键,会回到之前的fragmentBackstack没有fragment的话,就会退出activity

 

6、 如果添加多个fragment到同一个容器, 那么添加的顺序决定了它们在view hierarchy中显示的顺序.

7、 假如fragment想要添加或者使用actionbar,必须在fragmentoncreateView中增加setHasOptionsMenu(true) ;然后重写onCreateOptionsMenu或者onOptionsItemSelected。在onOptionsItemSelected中先执行activity的这个方法,activity没有响应改菜单的事件,才会被fragment接受。

 


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值