According to the Android fragment life cycle, I would expect that after onDestroy fragment will be recreated or at least onCreateView will onCreateView called again.
I have operation A starting another operation B for the result and activity B creating fragment F.
public class A extends FragmentActivity { ... public void onButonClick() { Intent intent = new Intent(this, B.class); startActivityForResult(intent, REQUEST_B); } } public class B extends FragmentActivity { ... public void onCreate(Bundle savedInstanceState) { ... this.currentFragment = Fragment.instantiate(this, name); FragmentTransaction transaction = getSupportFragmentManager().beginTransaction(); transaction.replace(this.view.getFragmentContainerId(), this.currentFragment, taskName); transaction.commit(); } } public class F extends Fragment { @override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { this.view = new MyView(); } @override public void onResume() { this.view.doSomething(); } @override public void onDestroy() { this.view = null; } }
When the Fragment is created for the first time, everything is in order, the view is displayed. Exiting the application (for example, going to the system settings) affects the fact that the onDestroy fragment is called without the onDestroyView called , but when I return to my application the onCreateView ist is not being called again , which causes a NullpointerException exception because I only create the view onCreateView . Resetting the view in onDestroyView , I think this will solve the problem, but I want to know what happens with lifecycyle here, and if I do something wrong.
Thanks.
Here is the logcat output.
03-11 11:22:47.565 6594-6594/com.xy.android.app I/ActivityA Perform button click. 03-11 11:22:47.595 6594-6594/com.xy.android.app V/ActivityA Pausing activity 03-11 11:22:47.605 6594-6594/com.xy.android.app D/ActivityB Creating activity 03-11 11:22:48.075 6594-6594/com.xy.android.app V/ActivityB Starting activity 03-11 11:22:48.105 6594-6594/com.xy.android.app I/ActivityB Resuming activity 03-11 11:22:48.476 6594-6594/com.xy.android.app I/ActivityB Starting task FragmentF. 03-11 11:22:48.536 6594-6594/com.xy.android.app I/FragmentF Attached to activity. 03-11 11:23:02.350 6594-6594/com.xy.android.app I/FragmentF Creating fragment 03-11 11:23:02.390 6594-6594/com.xy.android.app I/FragmentF Creating view for fragment 03-11 11:23:02.420 6594-6594/com.xy.android.app V/FragmentF View for fragment created 03-11 11:23:02.430 6594-6594/com.xy.android.app D/FragmentF Activity created. 03-11 11:23:02.441 6594-6594/com.xy.android.app V/FragmentF Starting fragment 03-11 11:23:02.741 6594-6594/com.xy.android.app V/ActivityA Saving activity instance state. 03-11 11:23:02.761 6594-6594/com.xy.android.app I/ActivityA Stopping activity 03-11 11:23:07.686 6594-6594/com.xy.android.app V/FragmentF Pausing fragment. 03-11 11:23:07.696 6594-6594/com.xy.android.app V/ActivityB Pausing activity 03-11 11:23:08.517 6594-6594/com.xy.android.app D/FragmentF Save instance state. 03-11 11:23:08.567 6594-6594/com.xy.android.app D/ActivityB Saving activity instance state. 03-11 11:23:08.597 6594-6594/com.xy.android.app I/FragmentF **Destroying fragment** 03-11 11:23:08.627 6594-6594/com.xy.android.app I/ActivityB Stopping activity 03-11 11:23:14.033 6594-6594/com.xy.android.app V/FragmentF Starting fragment 03-11 11:23:14.043 6594-6594/com.xy.android.app V/ActivityB Starting activity 03-11 11:23:14.063 6594-6594/com.xy.android.app I/ActivityB Resuming activity 03-11 11:23:14.063 6594-6594/com.xy.android.app I/FragmentF **Resuming fragment**
source share