【问题标题】:Android: Updating a nested fragment from another fragmentAndroid:从另一个片段更新嵌套片段
【发布时间】:2017-02-24 11:04:20
【问题描述】:

我有两个片段,片段 A 和片段 B。片段 A 包含 4 个选项卡,如下所示:

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

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

【问题讨论】:

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


    【解决方案1】:

    您无法直接更新 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());
    }
    

    【讨论】:

    • 我无法将片段 B 转换为对话框。在片段 B 中,这是一个 Web 视图,我在其中向用户收费。有什么方法可以知道片段何时可​​见?
    • 是的,onResume 方法,但是 FragmentA.onResume 直到 FragmentB.onPause 之后才会发生(为时已晚)。不过,您可以将任何您想要的内容放入片段对话框中。它与 AlertDialog 不同
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多