我在其中有一项活动
FragmentTransaction trans = getFragmentManager().beginTransaction();
FragmentList fragList = new FragmentList();
trans.replace(R.id.fragList, fragList, "fragList");
用实际片段填充我的帧布局。这很好。通过导航,我最后会在其他一些活动和其他一些片段中结束。在那个新片段中,我必须调用我的列表片段的方法来告诉它已经发生了变化。
FragmentList listfrag = (FragmentList) getFragmentManager().findFragmentByTag("fragList");
FragmentList listfrag2 = (FragmentList) getFragmentManager().findFragmentById(R.id.fraglist);
listfrag.updateData(b);
listfrag和listfrag2都是null。为什么呢?
编辑:
根据答案,从一项活动到另一项活动是不可能的。我有活动A, 在平板电脑A上有片段F1和F2,仅在手机F1上。如果我在F1上选择了某些内容,则会更新F2或调用活动B来显示F2。在F2中我按下一个保存按钮,我想更新F1。所以我要么在相同的活动(平板电脑)或不同的活动(电话)中打电话。如何在不重复更新代码的情况下执行此操作?
答案 0 :(得分:0)
片段生命周期与其活动相关联,您无法从其他活动中调用它。但是当你用另一个片段替换时,在相同的活动中,
试试这个,
trans
.replace(R.id.fragList, fragList, "fragList")
.addToBackStack(null) // this will keep fragment when you replace with another.
.commit();
答案 1 :(得分:0)
getFragmentManager()
方法获取对该活动中使用的FragmentManager
的引用。
本质上,您在一个Activity中创建Fragment,但在另一个Activity中查找它。你不能(轻松)这样做。
听起来您可能希望使用startActivityForResult()
和onActivityResult()
在活动之间来回传递数据。