【发布时间】:2012-07-05 14:20:38
【问题描述】:
我正在制作一个简单的绘图应用程序。
我希望能够在设备方向改变时将用户的绘图保存在屏幕上。这只发生在主要活动中。
我读到如果方向发生变化,则活动将被销毁并再次重新创建(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() 在我改变设备方向时会被调用。
【问题讨论】:
-
如果你解决了你的问题,那么我认为你应该在这里写下你的解决方案。
-
好吧,它解决了一半的问题。 onSaveInstanceState() 现在被调用,但无法弄清楚在再次创建 Activity 时如何传递我的 Bitmap 对象。