我有问题将我的数据从我的子片段传递到我的父片段。
在我的父片段中
public class ParentFragment extends Fragment {
我开始像这样的子片段:
FragmentManager fragmentManager = getFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
ChildFragment fragment = new ChildFragment ();
fragment.setTargetFragment(ParentFragment.this, FRAGMENT_CODE);
fragmentTransaction.replace(R.id.parentfragment, fragment);
fragmentTransaction.addToBackStack(null);
fragmentTransaction.commit();
从列表中获取团队名称。通过在我的子片段列表中选择一个团队,团队ID将传递回父片段:
teamId = String.valueOf(id);
Intent intent = new Intent();
intent.putExtra("TeamID", teamId);
getTargetFragment().onActivityResult(getTargetRequestCode(), GameActivity.RESULT_OK, intent);
FragmentManager fragmentManager = getFragmentManager();
fragmentManager.popBackStack();
在父片段中,我使用onActivityResult
接收数据 public void onActivityResult(int requestCode, int resultCode, Intent data) {
if(requestCode == FRAGMENT_CODE && resultCode == GameActivity.RESULT_OK) {
if(data != null) {
String teamId = data.getStringExtra("TeamID");
Log.v("ParentFragment", "Data passed from Child fragment = " + teamId);
}
}
}
工作得很好,就像描述here。
我的问题是通过调用父片段onCreate再次启动并覆盖teamId。然后TeamId为空。
如何在不覆盖数据的情况下将数据传递给父片段?
修改
这是"生命周期"我的teamId:
启动父片段=>初始化teamId = Null
v
开始onCreate => teamId = Null
v
启动onCreateView => teamId = Null
v
使用setTargetFragment
启动子片段v
选择子片段中的团队=> teamId = 1(例如)
v
popBackStack()到父片段
v
在parent fragment =>中启动onActivityResult teamId = 1
v
启动onCreateView => teamId = Null
对我来说,似乎onCreateView"覆盖" teamId。