GetFragmentManager.findFragmentByTag()返回null [英] GetFragmentManager.findFragmentByTag() returns null

查看:1124
本文介绍了GetFragmentManager.findFragmentByTag()返回null的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

  getFragmentManager()。beginTransaction()
.replace(R.id.graph_fragment_holder,new GraphFragment(),GRAPH_FRAGMENT)
.commit();

getFragmentManager()。beginTransaction()
.replace(R.id.list_fragment_holder,new ListFragment(),LIST_FRAGMENT)
.commit();

// getFragmentManager()。executePendingTransactions();

GraphFragment graphFragment =(GraphFragment)getFragmentManager()。findFragmentByTag(GRAPH_FRAGMENT);
graphFragment.setData(data);

ListFragment listFragment =(ListFragment)getFragmentManager()。findFragmentByTag(LIST_FRAGMENT);
listFragment.setData(data);

我提供了一个标签,所以我不确定为什么 findFragmentByTag )返回 null



问题:
$ b


  1. this.setRetainInstance(true)碎片 oncreate


  2. 片段构造函数都是空的 public fragmentName(){}


  3. 在添加碎片后尝试 executePendingTransactions


  4. 碎片上尝试添加而不是替换 code>(编辑)



解决方案

findFragmentByTag()总是返回null。

最后,我追踪了它,我重写了Activity中的SaveInstanceState(),但没有调用super。只要我修正了findFragmentByTag()就像预期的那样返回了片段。


        getFragmentManager().beginTransaction()
                .replace(R.id.graph_fragment_holder, new GraphFragment(), "GRAPH_FRAGMENT")
                .commit();

        getFragmentManager().beginTransaction()
                .replace(R.id.list_fragment_holder, new ListFragment(), "LIST_FRAGMENT")
                .commit();

        //getFragmentManager().executePendingTransactions();

        GraphFragment graphFragment = (GraphFragment) getFragmentManager().findFragmentByTag("GRAPH_FRAGMENT");
        graphFragment.setData(data);

        ListFragment listFragment = (ListFragment) getFragmentManager().findFragmentByTag("LIST_FRAGMENT");
        listFragment.setData(data);

I've supplied a tag so I'm not sure why findFragmentByTag() returns null.

What I've tried from reading other questions:

  1. this.setRetainInstance(true) in the oncreate of both fragments.

  2. Both fragment constructors are empty public fragmentName(){}.

  3. tried executePendingTransactions after adding the fragments.

  4. tried add instead of replace on the fragments (edited)

解决方案

I was having the same problem of findFragmentByTag() always returning null.

Eventually I tracked it down, I was overriding onSaveInstanceState() in my Activity but not calling super. As soon as I fixed that findFragmentByTag() returned the Fragment as expected.

这篇关于GetFragmentManager.findFragmentByTag()返回null的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆