【问题标题】:How to get Data from current fragment to other fragment?如何从当前片段获取数据到其他片段?
【发布时间】:2014-08-11 05:37:27
【问题描述】:

我正在为我当前的应用程序使用 Fragment。在这里,我有一个 Fragment FA,我正在导航到另一个 Fragment FB,并且我已将 FA 添加到后台堆栈,因为我想在 FB 片段中完成某些事件时进入 FA 片段。我在片段 FB 中有一个完成按钮。单击该按钮时,我需要在片段 FB 中做两件事,如下所示:-

(一)。我需要完成当前的片段 FB。 (b)。其次,我需要将一些数据从 FB 传递到已经存在的 Fragment FA,因为我已将其添加到 backstack。

我刚开始使用 Fragments,对它们了解不多,我想解决这个问题。任何人都可以为此提出建议,任何帮助都会很重要。

提前致谢。

【问题讨论】:

标签: android android-fragments fragment


【解决方案1】:

您可以将数据从一个片段传递到另一个片段,如下所示。

  Fragment fragment;
    fragment = new SingleImage();
    Bundle bundle = new Bundle();
    bundle.putString("img",actorsList.get(position).getImage());
    bundle.putString("desc",actorsList.get(position).getDesc());
    fragment.setArguments(bundle);
    getActivity().getFragmentManager().beginTransaction().replace(R.id.content_frame, fragment).addToBackStack( "tag" ).commit();

表示您可以使用片段添加参数以传递给另一个。

您可以使用以下代码在另一个片段中获取该数据

    Bundle bundle = this.getArguments();

    if(bundle != null)
    {
        tvdesc.setText(bundle.getString("desc"));
        img_url= bundle.getString("img");
     }

由于每个 Fragment 只需要一个返回堆栈条目,因此将返回状态名称设为 Fragment 的类名(通过 getClass().getName())。然后在替换 Fragment 时,使用 popBackStackImmediate() 方法。如果它返回 true,则意味着在后堆栈中有一个 Fragment 的实例。如果没有,实际执行Fragment替换逻辑。

 private void replaceFragment (Fragment fragment){
 String backStateName = fragment.getClass().getName();

 FragmentManager manager = getSupportFragmentManager();
 boolean fragmentPopped = manager.popBackStackImmediate (backStateName, 0);

 if (!fragmentPopped){ //fragment not in back stack, create it.
    FragmentTransaction ft = manager.beginTransaction();
    ft.replace(R.id.content_frame, fragment);
    ft.addToBackStack(backStateName);
    ft.commit();
   }
  }

【讨论】:

  • 但是我正在获取数据的片段已经在后台堆栈中,当用户按下完成按钮时我必须刷新列表。
  • 如果包含列表的片段已经在后台堆栈中,我如何刷新我的列表?
  • 我没有得到你想要的,但我已经编辑了我的答案,看看它是否对你有帮助。
  • 你能再看一遍我的问题吗,我没有得到你编辑的答案。
  • A) 完成当前片段 FB,您可以使用此链接 gist.github.com/jankovd/9303738 和 B) 将一些数据从 FB 传递到已经存在的片段 FA,您可以将上面的代码写入我拥有的完成按钮的 onclick给定您可以通过捆绑传递和获取数据的位置。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-06
  • 2017-07-31
  • 2018-11-30
  • 1970-01-01
相关资源
最近更新 更多