我有一个片段会引发一个活动,用户可以在其中插入一些细节。当用户终止填充数据时,活动关闭。然后显示上一个片段,我希望它被更新(使用用户在活动中提供的数据)。
如果它是一个活动,而不是片段,我可以使用它:
@Override
public void onResume(){
super.onResume();
recreate();
}
如何对片段做同样的事情?
您将在此 Fragment 所属的 Activity 中覆盖 onResume,并在此 Activity 中重新创建(重新启动)此 Fragment。例如
public class ActivityA extends Activity {
@Override
public void onResume() {
// here you can get the Fragment instance , so you can recreated this fragment here or invoke this fragment's function to set data or refresh data
}
}
您可以在片段中调用 startActivityForResult (Intent intent, int requestCode) 方法时抛出一个 Activity。
您还需要在片段中提供 onActivityResult (int requestCode, int resultCode, Intent data),数据在 Intent 参数中。
public class YourFragment extends Fragment {
public void throwActivity() {
// start activity
Intent intent = new Intent();
intent.setClass(getActivity(), YourActivity.class);
int requestCode = 1;
startActivityForResult(intent,requestCode);
}
// callback
@Override
public void onActivityResult (int requestCode, int resultCode, Intent data) {
recreate();
}
public void recreate() {
// your refresh code
}
}
public class YourActivity extends Activity {
public void yourMethod() {
int resultCode = 2;
setResult(resultCode); // goback to your fragment with your data
}
}