我正在制作一个简单的绘图应用程序.
我希望能够在设备方向改变时将用户的绘图保存在屏幕上.这只发生在主要活动中.
我读到如果方向改变,那么活动将被销毁并再次重新创建(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()");
}
Run Code Online (Sandbox Code Playgroud)
任何帮助将不胜感激.
编辑:
我从AndroidManifest.xml文件中删除了这一行:
android:configChanges="orientation"
Run Code Online (Sandbox Code Playgroud)
现在 …