【问题标题】:how to send some data from fragment of one activity to another fragment of another activity如何将一些数据从一个活动的片段发送到另一个活动的另一个片段
【发布时间】:2016-09-22 12:37:59
【问题描述】:

我已经阅读了许多链接,但都将数据从一个片段传递到另一个活动或从一个活动传递到另一个活动的片段,但我想从一个活动的片段发送到另一个活动的另一个片段

【问题讨论】:

  • 好吧...如果你可以从一个Fragment传递给一个Activity,一个Activity传递给一个Fragment,那么你可以通过Activity从一个Fragment传递给另一个Fragment,对吧?
  • 是的,我可以做到这一点,但这是唯一的方法..我的意思是没有其他直接的方法。??@cricket_007
  • 您可以尝试查看 EventBus 库。个人没试过,但是很多人推荐
  • 其实我是一个初学者程序员所以不知道如何使用外部库....我认为方法应该很简单,就像我不仅得到了解决方案@cricket_007跨度>
  • 在我用于这些目的的静态变量的应用程序中,看看我试图在下面给你的解释

标签: android android-fragments android-activity fragment android-fragmentactivity


【解决方案1】:

如果您必须在整个应用程序中传递数据,或者可能在您的示例中的远活动/片段之间传递数据,请考虑使用一些静态类(即使在 java 中没有静态类。它更像是一个静态字段包装器)。

public class MyRunTimeDatas{
  private static String myStringData;
  private static int myIntData;

  //getters and setters
}

现在,在fragment 1 使用

MyRunTimeDatas.setMyStringData("my value");
MyRunTimeDatas.setMyIntData(69);

终于可以在fragment 2拨打电话了

String myBeautifulString = MyRunTimeDatas.getMyStringData();
int myFantasticInt = MyRunTimeDatas.getMyIntData();

你就完成了

【讨论】:

  • 据我所知,您分享的方法是在同一个活动中将数据从一个片段传输到另一个片段......但在我的情况下,它是不同活动的片段@Pier Giorgio Misley
  • @Ayaz - 这是一个数据访问对象。由于变量是静态的,它们位于应用程序内存中,可以在任何类中访问。
  • @Ayaz 正如 cricket_007 所说:这是一个单独的类(一个单独的 .java 文件),因此这意味着您可以从应用程序的任何类访问它
  • 好的,我明白了....@cricket_007 @Pier Giorgio Misley..还有一个问题,比如如何从一个活动的片段中打开其他活动的片段
  • @Ayaz 老实说,我没有得到不将所有片段放在同一个活动中的好处。顺便说一句,您可以通过从 fragment1 打开 activity2 然后打开 fragment2 来做到这一点。但老实说,最好使用单个活动而不是两个
【解决方案2】:

除非我遗漏了什么,否则您可以从第一个 Fragment 调用 getActivity().startActivity(),并在该 Intent 上设置一些额外内容,然后从第二个 Activity 将一些参数传递给它创建的 Fragment。

所以,从 FragmentA

Intent i = new Intent(getActivity(), ActivityB.class);
i.setExtra("key", "hello world");  // for example 
getActivity().startActivity(i);

那么,活动B

onCreate() { 
    Intent i = getIntent();
    FragmentB frag = new FragmentB();
    if (i!=null) frag.setArguments(i); // pass along intent 
    // TODO load Fragment 

并在 FragmentB 中使用getArguments()

【讨论】:

  • 好的,我在手机上,所以无法测试,但应该与您在引用的示例中看到的代码相似
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-18
  • 2020-03-29
  • 1970-01-01
相关资源
最近更新 更多