在片段B中点击某些内容后,我想将一个字符串从它传递给前一个片段,即片段A.
我尝试通过在片段B中创建包含活动实现的侦听器接口来实现此目的。在片段B的onAttach中,我将活动转换为监听器类型。当在片段B中单击某些内容时,我会调用必须在“活动”中定义的侦听器回调:
myListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
selectedListener.onItemSelected(dataItem);
}
});
在活动中:
@Override public void onItemSelected(MyData dataItem) {
FragmentA currentFragment = (FragmentA)fragMgr.findFragmentByTag("FragmentA");
LinearLayout containerView = currentFragment.getView().findViewById(R.id.container);
此时片段backstack看起来像fragmentA - > fragmentB。在回调中调用fragmentA的getView会返回null,为什么会这样,我该如何获取此视图?
答案 0 :(得分:0)
getView()
可能返回null,因为您在调用片段onCreateView()
之前尝试访问它。
尝试仅在片段的字段上设置数据(即currentFragment.setMyData(dataItem)
),然后在onCreateView()
中检查该字段的非空值。