DialogFragmentでViewPager使って回転時に落ちる問題

回転時にまつわる問題。

DialogFragmentでViewPager使ってるやつだと回転時に

java.lang.IllegalStateException: Activity has been destroyed

で落ちることがある。てかメモリが弱い機種だとすぐ落ちる。

もう

@Override
 public int show(FragmentTransaction transaction, String tag) {
    try {
        return super.show(transaction, tag);
    } catch (IllegalStateException e) {
        // ignore
    }
    return -1;
}

@Override
public void show(FragmentManager manager, String tag) {
    try {
        super.show(manager, tag);
    } catch (IllegalStateException e) {
        // ignore
    }
}

で対応しようとしたけどなんか無理っぽい。

わけわからんなーと思いつつどこで落ちるんだろうと思ってfragmentのサイクルをLOGしてみた

/***
 * Activityに関連付けされた際に一度だけ呼び出される
 */
static final String TAG = "FragmentTest";
@Override
public void onAttach(Activity activity) {
    super.onAttach(activity);
    Log.d(TAG, "onAttach");
}

/***
 * Fragmentの初期化処理を行う
 */

/***
 * Activityの「onResume」に基づき開始される
 */
@Override
public void onResume() {
    super.onResume();
    Log.d(TAG, "onResume");
}

/***
 * Activityが「onPause」になった場合や、Fragmentが変更更新されて操作を受け付けなくなった場合に呼び出される
 */

/***
 * フォアグラウンドでなくなった場合に呼び出される
 */
@Override
public void onStop() {
    super.onStop();
    Log.d(TAG, "onStop");
}

/***
 * Fragmentの内部のViewリソースの整理を行う
 */
@Override
public void onDestroyView() {
    super.onDestroyView();
    Log.d(TAG, "onDestroyView");
}

/***
 * Fragmentが破棄される時、最後に呼び出される
 */
@Override
public void onDestroy() {
    super.onDestroy();
    Log.d(TAG, "onDestroy");
}

なぜか落ちなくなった。

↑の分を足すだけで解決した。

わけわからない・・・・

 

追記:ダメでした

↓弊社で開発、販売しているソフトウェアです↓

MediMonitor無料ダウンロード  

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です