我需要翻译的内容是:我有两个Fragments
,分别为A和B。我正在从Fragment A
启动Fragment B
。在关闭Fragment B
之前,我需要将数据从Fragment B
传递到Fragment A
。这就像使用startActivityForResult()
的想法。
在这里,我在Fragment A
中调用Fragment 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();
现在,在关闭 Fragment B 时,我会像这样调用一些东西:
getTargetFragment().onActivityResult(
getTargetRequestCode(),
Activity.RESULT_OK,
new Intent().putExtra("data", "datafrom C")
);
getActivity().getSupportFragmentManager().popBackStackImmediate();
现在,在基本活动中,我正在重写 onActivityForResult()
方法:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
Fragment pFragment = getSupportFragmentManager().findFragmentById(R.id.content);
if (pFragment instanceof CurrentPanchangDialog) {
if (pFragment != null) {
pFragment.onActivityResult(requestCode, resultCode, data);
}
}
super.onActivityResult(requestCode, resultCode, data);
}
我无法从Fragment B将数据传回到Fragment A。
fragmentB.setFragmentCallback(this);
在 FragmentA 中哪里调用?请详细解释。 - sagar suripopBackStackImmediate()
之前,我会调用fragmentCallback.onDataSent("Some data from FragmentB")
。 - sagar surigetActivity().getSupportFragmentManager().popBackStackImmediate()
之前调用它,则不会发送数据。 - sagar suri