【问题标题】:Nested fragment issue - frag1 calls frag2 which has an impact on the listview from frag1嵌套片段问题 - frag1 调用 frag2 对 frag1 的列表视图有影响
【发布时间】:2017-09-19 16:36:48
【问题描述】:

我认为对片段的调用是同步的,但事实并非如此。我有一个片段 1,其中包含我通过适配器更新的列表视图。然后我有一个启动片段 2 的按钮。 Frag2 对 frag1 的列表视图有影响,所以我认为我可以执行以下操作。但是当我点击按钮 btn1 时,我的片段 frag2 会在我看到 log.i 之后立即启动。

我想避免 frag1 中的刷新按钮。

有没有办法在 frag2 结束后立即执行操作?

@Override
public void onActivityCreated(Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);
    context = getActivity().getApplicationContext();

    initFindView();

    btn1.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            FragmentTransaction ft = getFragmentManager().beginTransaction();
            Frag2 f2 = new Frag2();
            ft.replace(R.id.content_frame, f2);
            ft.addToBackStack(null);
            ft.commit();

            Log.i("TEST","Test - back from tst2");

        }
    });

}

【问题讨论】:

  • "Frag2 对 frag1 的列表视图有影响" - 我想这意味着在显示 Frag2 时采取的操作会改变 ListView 中显示的数据?如果是这种情况,也许你应该使用 LoaderManager(就像在这个 blog post by Alex J. Lockwood 中)
  • 看起来不错。我会试一试。谢谢。

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


【解决方案1】:

根据您的问题,您只需要结果,您可以通过 startActivity(ForResult) 或通过 Fragments 通过 ResultReceiver 实现它,这是一个 Parcelable,您可以将其用作参数,并等待结果更新您的 Frag1。

【讨论】:

  • 我错误地认为您不能从片段开始活动。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-07-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多