我正在制作一个简单的绘图应用程序。
当设备方向改变时,我希望能够将用户的绘图保存在屏幕上。这只发生在主要活动中。
我读到如果方向发生变化,那么活动将被销毁并再次重新创建(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()
当我在设备上改变方向时会被调用。