2

我有一个有时会显示 DialogFragment 的 ActionBarActivity。当我尝试在旋转后关闭对话框时,它会因 IllegalStateException:Activity 已被破坏而崩溃。我无法将 Activity 设置为

            android:configChanges="orientation|screenSize|keyboardHidden"

因为我需要在旋转时重新绘制布局。

/**
 * Shows Loading progress dialog
 */
private void showProgress() {
    FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
    Fragment prev = getSupportFragmentManager().findFragmentByTag(LoadingDialogFragment.FRAGMENTMANAGERTAG);
    if (prev != null) {
        ft.remove(prev);
    }
    // Create and show the dialog.
    mProgressDialog = LoadingDialogFragment.newInstance("", getString(R.string.string_loading));
    mProgressDialog.show(ft, LoadingDialogFragment.FRAGMENTMANAGERTAG);
}

private void hideProgress() {
    if (mProgressDialog != null) {
        Log.d(getClass().getSimpleName(), "hideDialogNoConnection quita dialog");
        FragmentManager manager = getSupportFragmentManager();
        manager.beginTransaction().remove(mProgressDialog).addToBackStack(null).commitAllowingStateLoss();
        Log.d(getClass().getSimpleName(), "hideDialogNoConnection quita dialog con popBackStack");

        manager.popBackStack();
    }
    FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
    Fragment prev1 = getSupportFragmentManager().findFragmentByTag(LoadingDialogFragment.FRAGMENTMANAGERTAG);
    if (prev1 != null) {
        ft.remove(prev1);
    }
}

我能做些什么?

--编辑-- 这是 logcat:

09-03 20:00:39.102: E/AndroidRuntime(10917): FATAL EXCEPTION: main
09-03 20:00:39.102: E/AndroidRuntime(10917): Process: com.myapp.launcher, PID: 10917
09-03 20:00:39.102: E/AndroidRuntime(10917): java.lang.IllegalStateException: Activity has been destroyed
09-03 20:00:39.102: E/AndroidRuntime(10917):    at android.support.v4.app.FragmentManagerImpl.enqueueAction(FragmentManager.java:1376)
09-03 20:00:39.102: E/AndroidRuntime(10917):    at android.support.v4.app.BackStackRecord.commitInternal(BackStackRecord.java:595)
09-03 20:00:39.102: E/AndroidRuntime(10917):    at android.support.v4.app.BackStackRecord.commitAllowingStateLoss(BackStackRecord.java:578)
09-03 20:00:39.102: E/AndroidRuntime(10917):    at com.myapp.launcher.activities.HomeActivity.hideProgress(HomeActivity.java:348)
09-03 20:00:39.102: E/AndroidRuntime(10917):    at com.myapp.launcher.activities.HomeActivity.access$0(HomeActivity.java:344)
09-03 20:00:39.102: E/AndroidRuntime(10917):    at com.myapp.launcher.activities.HomeActivity$2.handleMessage(HomeActivity.java:157)
09-03 20:00:39.102: E/AndroidRuntime(10917):    at android.os.Handler.dispatchMessage(Handler.java:102)
09-03 20:00:39.102: E/AndroidRuntime(10917):    at android.os.Looper.loop(Looper.java:136)
09-03 20:00:39.102: E/AndroidRuntime(10917):    at android.app.ActivityThread.main(ActivityThread.java:5479)
09-03 20:00:39.102: E/AndroidRuntime(10917):    at java.lang.reflect.Method.invokeNative(Native Method)
09-03 20:00:39.102: E/AndroidRuntime(10917):    at java.lang.reflect.Method.invoke(Method.java:515)
09-03 20:00:39.102: E/AndroidRuntime(10917):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1283)
09-03 20:00:39.102: E/AndroidRuntime(10917):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1099)
4

0 回答 0