Android:将数据从子片段传递给父片段

我需要将子片段中的一些数据传递给父片段,当我回到父片段时,我将能够读取这些数据。 详细:

我有一个调用FragmentParent的FragmentActivity。 从FragmentParent我像这样调用FragmentChild:

FragmentChild fragmentChild = new FragmentChild(); FragmentTransaction transaction = getFragmentManager().beginTransaction(); transaction.replace(R.id.frl_view_container, fragmentChild); transaction.addToBackStack(null); ctransaction.commit(); 

在FragmentChild中,我设置了一个string值,我需要传递给FragmentParent,然后返回到FragmentParent。

 String result = "OK"; getFragmentManager().popBackStack(); 

在FragmentParent中读取结果string的最佳方式是什么?

你可以使用setTargetFragment和onActivityResult来实现这一点。

将FragmentParent实例设置为FragmentChild实例上的目标片段

 FragmentChild fragmentChild = new FragmentChild(); fragmentChild.setTargetFragment(this, FRAGMENT_CODE); FragmentTransaction transaction = getFragmentManager().beginTransaction(); transaction.replace(R.id.frl_view_container, fragmentChild); transaction.addToBackStack(null); transaction.commit(); 

在FragmentChild中,无论您调用popBackStack,都可以在设置的目标Fragment上调用onActivityResult。 使用Bundle传递其他数据。

 Intent intent = new Intent(); intent.putExtra(FRAGMENT_KEY, "Ok"); getTargetFragment().onActivityResult(getTargetRequestCode(), Activity.RESULT_OK, intent); getFragmentManager().popBackStack(); 

回到FragmentParent中,重写默认的onActivityResult方法。

 public void onActivityResult(int requestCode, int resultCode, Intent data) { if(requestCode == FRAGMENT_CODE && resultCode == Activity.RESULT_OK) { if(data != null) { String value = data.getStringExtra(FRAGMENT_KEY); if(value != null) { Log.v(TAG, "Data passed from Child fragment = " + value); } } } }