android-fragments 在不使用活动的情况下在两个片段之间传递数据

tzxcd3kk  于 2022-11-13  发布在  Android
关注(0)|答案(3)|浏览(110)

我想在两个片段之间传递数据,而不使用activity和fragment activity。
我不想使用如下活动在片段之间传递数据:Communicating with Other Fragments
下面是我的场景:
我有一个Parent片段,里面有两个子片段。现在我需要在这两个片段之间传递数据。如何实现这一点?
我调查了这个:Event Bus,但无法取得片段的工作范例。
是否有其他替代方法可以在片段之间传递数据?
任何帮助都将不胜感激。

根据InnocentKiller的回答进行编辑:

在FragmentOne中,我实现了:

FragmentTwo = new FragmentTwo();
    Bundle bundle = new Bundle();
    bundle.putString("Hello", "My name is Siddharth");
    fragment.setArguments(bundle);

在FragmentTwo中,我实现了:

Bundle bundle = this.getArguments();
    String myInt = bundle.getString("Hello","Test");
    mStartTripButton.setText(myInt);
mbyulnm0

mbyulnm01#

在Activity/fragment、fragment/fragment/、Activity/Activity、class/ class之间交换数据的最佳方式,创建一个公共的单例类,如下所示:

public class DataHolderClass {
private static DataHolderClass dataObject = null;

private DataHolderClass() {
    // left blank intentionally
}

public static DataHolderClass getInstance() {
    if (dataObject == null)
        dataObject = new DataHolderClass();
    return dataObject;
}
private String distributor_id;;

 public String getDistributor_id() {
    return distributor_id;
 }

 public void setDistributor_id(String distributor_id) {
    this.distributor_id = distributor_id;
 }
}

现在在任何事件中的任何位置(片段、活动、类)设置,然后再移动到新屏幕

DataHolderClass.getInstance().setDistributor_id("your data");

现在随处可见(片段、活动、类)

String _data = DataHolderClass.getInstance().getDistributor_id();
kzmpq1sx

kzmpq1sx2#

您可以使用EventBus https://github.com/greenrobot/EventBus在Android中传递任何复杂的对象。
将对象从一个“活动”传递到另一个“活动”得示例:
在EventBus上添加对象:

EventBus.getDefault().postSticky(anyObject);
startActivity(new Intent(getActivity(), SomeActivity.class));

某个活动中的任何位置:

AnyObject anyObject = EventBus.getDefault().getStickyEvent(AnyObject.class);

这个例子只是为了说明它可以跨Activity工作,你可以调用getStickyEvent来获取代码中任意位置的anyObject。
因此,您可以在片段A中发布一个对象,并在片段B中使用getStickyEvent来检索它。
如果你有很多参数和/或复杂的对象要从一个地方移动到另一个地方,这是特别方便的。只需创建一个包含参数的getter/setter的“保持器”对象,然后沿着。这比分别传递它们并以某种方式序列化复杂对象要简单得多。

kxkpmulp

kxkpmulp3#

我认为你是试图从一个片段传递数据到另一个片段,所以尝试使用下面的代码.
使用一个捆绑包,所以写下面的代码在第一个片段中,从那里你想发送数据.

Fragment fragment = new Fragment();
Bundle bundle = new Bundle();
bundle.putString("message", "From Activity");
fragment.setArguments(bundle);

并检索数据,请在其他片段中使用以下代码

String strtext=getArguments().getString("message");

相关问题