Android:从另一个片段更新嵌套片段

时间:2017-02-24 11:04:21

标签: android android-fragments android-nested-fragment

我有两个片段,片段A和片段B.片段A包含4个制表符,如下所示:

enter image description here

选项卡3具有回收站视图,用户将从中选择一个选项。现在用户将转到Fragment B,并做一些事情。完成后,调用将再次返回到片段A,现在Tab 4将突出显示,并且将加载第4个选项卡中的数据。

到目前为止,我可以回到片段A.但是从那里,我无法切换到标签4并加载数据。在检查时我发现,当回调返回到片段A时,仍然不可见。因此标签没有切换。我怎么能做到这一点?

1 个答案:

答案 0 :(得分:0)

您无法直接更新FragmentA,因为它已暂停。你可以做的是让FragmentB成为DialogFragment并使用targetFragment来获得结果(很像startActivityForResult)

在FragmentA中,在你启动FragmentB的地方添加:

//RC_FRAGMENT_B is just an int constant to identify the result later
fragmentB.setTargetFragment(FragmentA.this, RC_FRAGMENT_B); 

并实施:

public static final int RC_FRAGMENT_B = 1666;
public static final int RC_SUCCESS = 1888;

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    if ( requestCode == RC_FRAGMENT_B && resultCode == RC_SUCCESS ) {
         //change tab, etc.
    }
}

然后在FragmentB中,完成后,使用:

Fragment target = getTargetFragment();
if (target != null) {
    //FragmentA.RC_SUCCESS result code needs to be a constant indicate to FragmentA what to do
    target.onActivityResult(getTargetRequestCode(), FragmentA.RC_SUCCESS, getActivity().getIntent());
}