我有2 import assetMap from 'my-new-addon/asset-map';
A和B.我从Fragments
开始Fragment B
。我需要在Fragment A
关闭之前将数据从Fragment B
传递到Fragment A
。它就像Fragment B
想法一样。
在片段A中我称之为片段B:
startActivityForResult()
现在在片段B中我在关闭时调用这样的东西:
FragmentB calendarDialog = new FragmentB();
calendarDialog.setTargetFragment(CurrentPanchangDialog.this, 1);
FragmentTransaction transaction = getActivity().getSupportFragmentManager().beginTransaction();
transaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
transaction.setCustomAnimations(R.anim.enter_from_left, R.anim.exit_to_right, R.anim.enter_from_right, R.anim.exit_to_left);
transaction.add(android.R.id.content, calendarDialog).addToBackStack(null).commit();
现在在基本活动中,我将覆盖getTargetFragment().onActivityResult(
getTargetRequestCode(),
Activity.RESULT_OK,
new Intent().putExtra("data", "datafrom C")
);
getActivity().getSupportFragmentManager().popBackStackImmediate();
:
onActivityForResult()
我没有将数据从片段B返回到片段A。
答案 0 :(得分:7)
•使用如下方法创建一个接口:
public interface FragmentCallback {
void onDataSent(String yourData);
}
•在FragmentA中实现此接口并实现onDataSent()方法:
public class FragmentA implements FragmentCallback {
@Override
void onDataSent(String yourData){
//Do something with your data
}
}
•在Fragment B中声明此接口变量并创建一个公共setter方法:
public class FragmentB {
private FragmentCallback fragmentCallback;
public void setFragmentCallback(FragmentCallback callback) {
this.fragmentCallback = callback;
}
}
•在某处使用FragmentA将其设置为FragmentB实例上的回调:
fragmentB.setFragmentCallback(this);
•从FragmentB到FragmentA的路径数据(如果要在FragmentB即将关闭时发送数据,您可以从片段的生命周期方法之一执行此操作):
public class FragmentB {
public void onDestroy() {
if(fragmentCallback != null){
fragmentCallback.onDataSent("Some data from FragmentB");
}
super.onDestroy();
}
}
答案 1 :(得分:0)
您也可以在Activity中使用一个变量,然后从Fragment中访问它,可能是这样的:
的活动:
private String data;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
public String getData() {
return this.data;
}
片段:
String dataFromActivity = ((YourActivity)getActivity).getData();