Я делаю простое приложение для рисования.
Я хочу иметь возможность сохранять рисунок пользователя на экране при изменении ориентации устройства. Это происходит только в основной деятельности.
Я читал, что если ориентация меняется, то активность уничтожается и создается заново(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()
вызывается, когда я меняю ориентацию на устройстве.