从片段 A -> 片段 B -> 片段 C 传输数据。当用户单击后退按钮时,我想 return 片段 A 和数据

transfer data from fragment A -> fragment B - > fragment C. When user click Back button, I want to return to fragment A and data

我是 android 开发人员的新手。我有一个关于 3 个片段传输的问题。

我有 3 个片段 (A - B - C)。我想从 A -> B -> C 传输数据。
在每个片段中,数据都被更改了。 当用户点击 BACK BUTTON 时,用户想要 return A 更新数据。 如何使用更新数据 return 分片 A? 谢谢

使用接口实现。在 fragment 和 activity 中实现接口,因为这是通过 activity 在 fragment 之间进行通信的好方法。然后通过接口发送数据并从中提取数据。

  1. 您可以使用接口 class 在片段之间进行通信,但必须确保所有片段都处于活动状态。

  2. 您可以使用 SharedPreferences,您可以在其中保存数据并在任何您喜欢的地方检索它

这里是一个如何实现通信的示例想法。

 // activity classs
 public class SampleActivity extends Activity implements    OnFragmentChangeListener {
 OnBackPressListener  dataFragment;
 public void onCreate(bundle){

      android.app.FragmentManager fragmentManager=getFragmentManager();

    android.app.FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();

    dataFragment = new DataFragment();
    fragmentTransaction.add(R.id.audio_permission_button,dataFragment);
    fragmentTransaction.commit()
 }
  @override
  public void OnFragmentChange(Bundle bundle){
  //here you go.
  // write code to load new fragment with same idea. now you have bundle do what you want.

}
@Override
public void onBackPressed() {
 // you can call this method from any click event, This just an sample idea.
 dataFragment.OnActivityBackPress();
}

}
 // interface to communicate with fragment
 public interface OnFragmentChangeListener {
     public void OnFragmentChange()
 }
 // fragment class
public class DataFragment extends Fragment implements OnBackPressListener {

 OnFragmentChangeListener onFragmentChangeListener;


@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
 onFragmentChangeListener=(OnFragmentChangeListener) getActivity();


}

    @Override
public void OnActivityBackPress() {
 // pass you data to activity for loading new fragment or to refresh data.
 Bundle bundle= new Bundle();

 onFragmentChangeListener.OnFragmentChange(bundle);



}
}

// interface behave like mediator 
public interface OnBackPressListener {

public void OnActivtiyBackPress();
}