【问题标题】:Nested fragment with wrong activity reference after configuration change配置更改后活动引用错误的嵌套片段
【发布时间】:2013-01-22 17:31:30
【问题描述】:

我终于在 support library 第 11 版中研究新的嵌套片段 API。

一切 在我尝试使用嵌套片段持有的活动引用之前,它工作得很好。 配置更改后,childFragment 似乎没有分离并重新附加到新活动。

基本上在方向改变后,我的 childFragment 处于不一致的状态,我无法使用getActivity() 获得正确的活动实例。

我设法使用getParentFragment().getActivity() 找到了正确的方法,它有效,但我认为这不是正确的方法。

这是我第一次在parentFragment中添加片段的代码,之后片段会自动添加回parentFragment

        public void addChildFragment() {
            Fragment f = getFragment().getChildFragmentManager().findFragmentByTag( FRAGMENT_CHILD_TAG );
            if (f == null) {
                FragmentTransaction ft = getFragment().getChildFragmentManager().beginTransaction();

                f = new TrackBrowserFragment();
                f.setArguments( getFragment().getArguments() );

                ft.add( R.id.fragment_album_detail_child_fragment_layout, f , FRAGMENT_CHILD_TAG );
                ft.commit();
            }
        }

活动实例中的这种不一致显然会导致我的片段出现多个问题(与服务、广播接收器等绑定)。 我可能做错了什么,因为我认为这不是嵌套片段的正确行为。

所以:

我的代码有问题吗? 这是嵌套片段的预期行为吗?

我错过了什么吗? 我应该自己拆/装吗?

谢谢

【问题讨论】:

  • 您能否发布您看到的错误以及您如何调用 addChildFragment()
  • 我发现这是问题所在,在父片段中使用 setRetainInstance() 不会使孩子被分离。
  • 我知道您无法保留嵌套片段,但不记得看到任何有关父片段的信息。我想知道这是否是预期的行为。
  • 您没有将解决方案写为答案并将其标记为已接受的任何原因? :)
  • 不是真的...我现在就去做

标签: android android-fragments android-fragmentactivity android-support-library


【解决方案1】:

我发现问题出在哪里,我在父片段中使用 setRetainInstance(true) 并保持子片段被分离。

在我删除该行后,一切都按预期工作

【讨论】:

    猜你喜欢
    • 2012-05-17
    • 1970-01-01
    • 1970-01-01
    • 2012-02-08
    • 1970-01-01
    • 2014-08-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多