バーコードをスキャンするアプリに取り組んでいます。スキャンが成功すると、スキャンされたコードを含むダイアログが表示され、バー/QR コードに含まれていたものに応じて、ブラウザを開くボタンが表示されます。 SMS などを送信します。ダイアログが表示されている間に、画面の向きが変わるとクラッシュします。クラッシュする前に方向が数回変わる可能性があるところまで動作しましたが、LogCat を確認すると、NullPointerException が FC を引き起こしていると表示されます。@CommonsWareの提案を実装する前に、クラッシュする前に任意の回数回転させることができましたが、それらを実装して以来、FCは常に2番目の向きの変更に基づいています。これを起動するとdebug mode
電話を何度でも好きなだけ速く回転させることができますが、通常モードで起動するとすぐにクラッシュします。
クラス フィールド:
private String currentType;
私は実装しましたonSaveInstanceState()
:
@Override
public void onSaveInstanceState(Bundle outState){
super.onSaveInstanceState(outState);
outState.putString("savedType", currentType);
}
またonRestoreInstanceState()
:
@Override
public void onRestoreInstanceState(Bundle savedInstanceState){
super.onRestoreInstanceState(savedInstanceState);
currentType = savedInstanceState.getString("savedType");
}
アップデート
@CommonsWareの提案に従って、上記のコードを現在のものに更新しました。また、整合性のために投稿を編集しました。
CM7 (Android バージョン - 2.3.7、カーネル バージョン - 2.6.37.6-cyanogenmod-g0799e00 android@portatile #1、Mod バージョン - CyanogenMod-7-11152011-NIGHTLY-N1、ビルド番号 - GWK74) も使用しています。