Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/224.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 当碎片从后台弹出时,如何将一些数据发送到碎片?_Android_Android Fragments - Fatal编程技术网

Android 当碎片从后台弹出时,如何将一些数据发送到碎片?

Android 当碎片从后台弹出时,如何将一些数据发送到碎片?,android,android-fragments,Android,Android Fragments,我有一个关于片段容器的活动。例如,Fragment1是产品列表。在搜索操作中,我将容器替换为Fragment2(搜索过滤器面板),并需要按“返回”按钮将一些数据发送到从backstack Fragment1弹出的容器。怎么做?我在所有片段上都有静态create方法(使用setArgumentsuse),但我不想创建新实例。也许我在使用片段时遗漏了一些东西,但我只知道setArguments方法,但此方法仅可用于创建片段的新实例。您可以将数据存储在MainActivity中,并从任何片段读取数据,

我有一个关于片段容器的活动。例如,Fragment1是产品列表。在搜索操作中,我将容器替换为Fragment2(搜索过滤器面板),并需要按“返回”按钮将一些数据发送到从backstack Fragment1弹出的容器。怎么做?我在所有片段上都有静态
create
方法(使用
setArguments
use),但我不想创建新实例。也许我在使用片段时遗漏了一些东西,但我只知道
setArguments
方法,但此方法仅可用于创建片段的新实例。

您可以将数据存储在MainActivity中,并从任何片段读取数据,如:

//MainActivity
private String mSearchItem;

public void getSearchItem(){
    return this.mSearchItem;
}

public void setSearchItem(String searchItem){
    this.mSearchItem = searchItem;
}


//FRAGMENT 1
public void onResume(){
    super.onResume();

    String item = ((MainActivity)getActivity()).getSearchItem();
    //if item != null do some crazy shizzle
    //set MainActivity searchitem to null to avoid reloading it
}



//FRAGMENT 2
private void setData(String searchItem){
    ((MainActivity)getActivity()).setSearchItem(searchItem);
}

片段之间的通信应始终通过活动完成,因为它们应彼此完全独立。

相同活动的两个片段之间的任何通信应仅通过活动完成,请使用getActivity()方法,创建一个接口并在活动中实现它

您可以在活动中存储数据,并在片段附加的变量中存储数据,在以前片段的onResume()中,您可以从活动中还原数据并使用它。

我正在使用
Otto
(事件总线)执行某种操作(REST服务访问)。在这种情况下是否可用?现在最好使用