我目前正在使用此处的代码,尽管经过大量修改以满足我的需求 https://stackoverflow.com/a/28186621/4541217 比如我需要从相机拍摄图像以及从图库中选择。我也在缩放图像。
这一切都很好,除了一个问题。旋转设备时我丢失了东西。
我有
bTemp = null;
if(getLastNonConfigurationInstance() != null) {
bTemp = getLastNonConfigurationInstance();
}
在我的onCreate中,并覆盖...
@Override
@Deprecated
public Object onRetainNonConfigurationInstance() {
return bTemp;
}
我可以让它返回图像但我丢失了所有的笔画信息。
从示例中,我尝试保存Uri,changedBitmap,位图和choosenImageView。但是,这些都不起作用。如果我拍照,乱涂乱画,然后在做其他任何事情之前,使用changedBitmap,如果我旋转,那么我得到第一组笔画。但是,之后什么都没有。
有人可以帮我保持旋转中风信息吗?
答案 0 :(得分:0)
Learn about the activity lifecycle.
您需要覆盖onPause,onResume等函数,并使用savedInstanceState。
答案 1 :(得分:0)
我最终设法解决了这个问题,所以对于那些试图做同样事情的人来说,这就是我所做的。
继续开始帖子中的示例链接,为了让它在旋转时坚持......
在onRetainNonConfigurationInstance中,保留changedBitmap。 (这在活动中)
@Override
@Deprecated
public Object onRetainNonConfigurationInstance() {
return alteredBitmap;
}
然后,在活动的onCreate中......
if(getLastNonConfigurationInstance() != null) {
bmp = (Bitmap)getLastNonConfigurationInstance();
alteredBitmap = Bitmap.createBitmap(bmp.getWidth(), bmp.getHeight(), bmp.getConfig());
choosenImageView.setNewImage(alteredBitmap, bmp);
}
注意“bmp”是从changedBitmap发送的,现在changedBitmap是新图像。然后将其传递到DrawableImageView中的setNewImage。