簡単な描画アプリを作っています。
デバイスの向きが変わったときに、ユーザーの描画を画面に保存できるようにしたい。これは、メイン アクティビティでのみ発生します。
向きが変わると、アクティビティが破棄され、再度作成される(onCreate(Bundle created)
呼び出される)ことを読みました。も呼び出す必要があることを意味するかどうかはわかりませんonSavedInstanceState(Bundle bundle)
。私のアプリでは、別のアクティビティがメインのアクティビティの上にフォーカスされた場合にのみ呼び出され、横向き/縦向きに回転するときは呼び出されないためです。
既存のビットマップを保存して、向きが変わったときにメイン アクティビティに渡す方法を探しているだけです。onSaveInstanceState
呼び出されない場合はどうすればよいですか?
また、Bitmap はparceable
すでに実装されているので、それを使用しました。
メイン アクティビティのコードは次のとおりです。
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// some more activity code...
if (savedInstanceState != null) {
bitmap = savedInstanceState.getParcelable("bitmap");
Log.d("STATE-RESTORE", "bitmap created");
paintBoard.setBitmapBackground(bitmap, false);
Log.d("RESTORING...", "onRestoreInstanceState()");
} else {
Log.d("SavedInstanceState", "null");
}
}
// Never called when I change orientation on my device
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
bitmap = Bitmap.createBitmap(paintBoard.getBitmap());
outState.putParcelable("bitmap", bitmap);
Log.d("STATE-SAVE", "onSaveInstanceState()");
}
どんな助けでも大歓迎です。
編集 :
AndroidManifest.xml ファイルから次の行を削除しました。
android:configChanges="orientation"
onSaveInstanceState()
デバイスの向きを変更すると呼び出されるようになりました。