Android查找片段始终返回null

时间:2014-02-11 20:10:45

标签: android android-fragments

我在其中有一项活动

    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。所以我要么在相同的活动(平板电脑)或不同的活动(电话)中打电话。如何在不重复更新代码的情况下执行此操作?

2 个答案:

答案 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()在活动之间来回传递数据。