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.
我从阅读其他问题中尝试过的
> this.setRetainInstance(true)在两个片段的oncreate上.
>两个片段构造函数都是空的public fragmentName(){}.
>在添加片段后尝试执行executePendingTransactions.
>尝试添加而不是替换片段(已编辑)
解决方法
我遇到同样的问题,findFragmentByTag()总是返回null.
最终我跟踪它,我在我的活动中超越了SaveInstanceState(),但没有调用超级.一旦我修复了findFragmentByTag()返回的Fragment按预期.