Pass data between two fragments without using activity

大兔子大兔子 提交于 2019-11-27 14:32:33

Best Way to exchange data between activity/fragments, fragment/fragment/, activity/activity, class/ class, make a common singleton class like:

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;
 }
}

now set from anywhere(Fragment, activity, class) at any event before you move to new screen

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

now get anywhere(Fragment, activity, class)

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

You can use EventBus https://github.com/greenrobot/EventBus to pass any complex object around in Android.

Example passing an object from one Activity to another:

Add your object on the EventBus:

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

Anywhere in SomeActivity:

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

This examle is just to show that it works across Activities, you can call getStickyEvent to get anyObject anywhere in your code.

So, you can post an object in Fragment A, and use getStickyEvent in fragment B to retrieve it.

This is especially convenient if you have a lot of arguments and/or complex objects you wish to move from one place to the other. Simply create a single 'holder' object containing getter/setters for the arguments and then pass it along. Much simpler than having to pass them separately and somehow serialize the complex objects.

I think you are trying to pass data from one fragment to another fragment, So try using below code.

Use a Bundle, So write below code in first fragment from where you want to send data.

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

and to retrieve that data, use the following code in your other fragment

String strtext=getArguments().getString("message");
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!