Android 不再调用 onDestroy 之后的 onCreateView 片段

Android Fragment onCreateView after onDestroy not called again

根据 Android 片段生命周期,我希望在 onDestroy 之后片段将被重新创建,或者至少 onCreateView 被再次调用。

我有一个 Activity A 开始另一个 Activity B 作为结果,Activity B 创建一个片段 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;
   }

}

第一次创建片段时一切正常,显示视图。离开应用程序(例如转到系统设置)会影响片段的 onDestroy 被调用而没有 onDestroyView 被调用 ,但是当我返回时我的应用程序 onCreateView 未再次调用 ,这会导致 NullpointerException,因为我仅在 onCreateView 中实例化视图。 在 onDestroyView 中重置视图我认为可以解决问题,但我想知道生命周期这里出了什么问题以及我是否做错了什么。

谢谢。

这是 logcat 输出。

    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**

经过一段时间的调查后,我最终 "solved" 通过在 onCreateView 中创建视图并在 onDestroyView 中销毁它来解决问题,但不理解为什么系统没有按照描述调用回调在 sdk 文档中。