GetFragmentManager.findFragmentByTag()返回null [英] GetFragmentManager.findFragmentByTag() returns 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
-
this.setRetainInstance(true)
在碎片
中oncreate
。 -
片段
构造函数都是空的public fragmentName(){}
。 -
在添加
碎片
后尝试executePendingTransactions
。 -
在
碎片上尝试
添加
而不是替换
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:
this.setRetainInstance(true)
in theoncreate
of bothfragments
.Both
fragment
constructors are emptypublic fragmentName(){}
.tried
executePendingTransactions
after adding thefragments
.tried
add
instead ofreplace
on thefragments
(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屋!