我是Android开发人员的新手。我有一个关于转移3个片段的问题。
我有3个片段(A - B - C)。我想要从A - >转移数据。 B - > C.
在每个片段中,数据已被更改。
当用户单击BACK BUTTON时,用户希望返回包含更新数据的A.
如何使用更新数据返回片段A?
感谢。
答案 0 :(得分:0)
使用界面来实现这一目标。在片段和活动中实现接口,因为它是通过活动在片段之间进行通信的好方法。然后通过接口发送数据并从中提取数据。
答案 1 :(得分:0)
您可以使用Interface类在片段之间进行通信,但必须确保所有片段都处于活动状态。
您可以使用SharedPreferences保存数据并在任意位置检索数据
答案 2 :(得分:0)
以下是如何实现沟通的示例。
// 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();
}