2

サポート ライブラリを使用して、フラグメントを使用してダイアログを作成しています。

そして、私はダイアログを表示して閉じるための次のコードを持っています:

@Override
public void onCreate(Bundle savedInstanceState) {
    Log.d("Create", "Create");
    setContentView(R.layout.activity_report);
    init();
    addListeners();
    addhandlerListener();
    super.onCreate(savedInstanceState);
}

private void showDialog(final Class<?> classs) {
    if (classs.equals(AddressValidateProgress.class)) {
        addressValidateProgress = AddressValidateProgress.newInstance();
        addressValidateProgress.show(getSupportFragmentManager(), null);
        Log.d("counter", "+1");
    }
    if (classs.equals(GPSSearchProgress.class)) {
        showDialog(gpsSearchloadId);
    }
}

private void dismissDialog(final Class<?> classs) {
    if (classs.equals(AddressValidateProgress.class)) {
        FragmentTransaction ft = getSupportFragmentManager()
                .beginTransaction();
        ft.remove(addressValidateProgress).commitAllowingStateLoss();
        addressValidateProgress = null;
        Log.d("super", addressValidateProgressId + ":dismissed");
    }
    if (classs.equals(AddressChooseDialog.class)) {
        FragmentTransaction ft = getSupportFragmentManager()
                .beginTransaction();
        ft.remove(addressChooseDialog).commitAllowingStateLoss();
        addressChooseDialog = null;
    }
    if (classs.equals(GPSSearchProgress.class)) {
        dismissDialog(gpsSearchloadId);
        Log.d("super", gpsSearchloadId + ":dismissed");
    }
}

アプリケーションを縦向きモードで起動すると、ダイアログを通常どおり使用できます。画面を回転させることもでき、ダイアログが再構築されます。
問題は、アプリケーションを起動して画面を回転させ、ダイアログを開くボタンをクリックすると、例外が発生することです。

java.lang.IllegalStateException: Can not perform this action after onSaveInstanceState
4

1 に答える 1

0

解決策が見つかりました。

宣言された static Handler が原因でした

于 2012-07-14T15:33:40.067 に答える