Android:将数据传递给父片段而不覆盖

时间:2014-07-21 16:26:17

标签: android fragment

我有问题将我的数据从我的子片段传递到我的父片段。

在我的父片段中

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。

0 个答案:

没有答案