从后台弹出时如何将一些数据发送到片段?
How to send some data to fragment when it popped from backstack?
我有一个 activity 带有碎片容器。 Fragment1 例如是产品列表。在搜索操作中,我将容器替换为 Fragment2(搜索过滤器面板),并且需要在后退按钮上发送一些数据以从后台弹出 Fragment1。怎么做 ?我在所有片段上都有静态 create
方法(使用 setArguments
),但我不想创建新实例。也许我在使用片段时遗漏了一些东西,但只知道 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);
}
片段之间的通信应始终通过 activity 完成,因为它们应该完全相互独立。
相同 activity 的两个片段之间的任何通信只能通过 activity 完成,使用 getActivity() 方法,创建一个接口并在 activity[ 中实现它=10=]
您可以在片段附加的 activity 中存储带有变量的数据,在您之前的片段的 onResume() 中,您可以从 activity 恢复它并使用它。
我有一个 activity 带有碎片容器。 Fragment1 例如是产品列表。在搜索操作中,我将容器替换为 Fragment2(搜索过滤器面板),并且需要在后退按钮上发送一些数据以从后台弹出 Fragment1。怎么做 ?我在所有片段上都有静态 create
方法(使用 setArguments
),但我不想创建新实例。也许我在使用片段时遗漏了一些东西,但只知道 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);
}
片段之间的通信应始终通过 activity 完成,因为它们应该完全相互独立。
相同 activity 的两个片段之间的任何通信只能通过 activity 完成,使用 getActivity() 方法,创建一个接口并在 activity[ 中实现它=10=]
您可以在片段附加的 activity 中存储带有变量的数据,在您之前的片段的 onResume() 中,您可以从 activity 恢复它并使用它。