从backstack弹出时如何将一些数据发送到片段?

时间:2015-02-05 09:17:46

标签: android android-fragments

我有一个带有容器的活动片段。 Fragment1 是产品列表。在搜索操作上,我用 Fragment2 (搜索过滤器面板)替换容器,并且需要在后退按钮上发送一些数据从backstack Fragment1 弹出。怎么做 ?我对所有片段都有静态create方法(使用setArguments),但我不想创建新实例。也许我在使用片段时遗漏了一些东西,但只知道setArguments方法,但这种方法只能用于创建片段的新实例。

4 个答案:

答案 0 :(得分:2)

您可以将数据存储在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);
}

答案 1 :(得分:1)

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

答案 2 :(得分:0)

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

答案 3 :(得分:0)

您可以将数据与变量一起存储在您的活动中,这些变量会附加到您的活动中,并且在您之前的片段的onResume()中,您可以将其从活动中恢复并使用它。