【发布时间】:2017-04-03 02:48:30
【问题描述】:
我是 android 开发人员的新手。我有一个关于 3 个片段的转移的问题。
我有 3 个片段 (A - B - C)。我想从 A -> B -> C 传输数据。
在每个片段中,数据都已更改。
当用户单击 BACK BUTTON 时,用户想要返回 A 和更新的数据。
如何使用更新数据返回片段 A?
谢谢。
【问题讨论】:
我是 android 开发人员的新手。我有一个关于 3 个片段的转移的问题。
我有 3 个片段 (A - B - C)。我想从 A -> B -> C 传输数据。
在每个片段中,数据都已更改。
当用户单击 BACK BUTTON 时,用户想要返回 A 和更新的数据。
如何使用更新数据返回片段 A?
谢谢。
【问题讨论】:
这是一个如何实现通信的示例想法。
// 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();
}
【讨论】:
使用接口来实现这一点。在片段和活动中实现接口,因为它是通过活动在片段之间进行通信的好方法。然后通过接口发送数据并从中提取数据。
【讨论】:
您可以使用接口类在片段之间进行通信,但它必须确保所有片段都处于活动状态。
您可以使用 SharedPreferences 来保存数据并在任何您喜欢的地方检索它
【讨论】: