如何使用onRetainNonConfigurationInstance()保存位图以处理屏幕旋转?

6
在我的课程中,手机相机将被打开,程序会在用户从手机相机拍照后显示位图,但同时用户将屏幕旋转到“横向”时,位图将消失,活动的onCreate()将重新加载,然后相机将再次打开。
我不知道如何使用onRetainNonConfigurationInstance()或onSaveInstanceState()保存位图。
问题是如何在用户旋转手机之前保存从手机相机获取的位图,以便即使手机处于横向模式,相同的位图也会显示在屏幕上?
---编辑--- 在AndroidManifest.xml中添加是获得状态保存的好方法吗?

请前往您的原始帖子并接受最可行的答案。 - JoxTraex
1个回答

9

在 onSaveInstanceState 中保存它:

  @Override
  public void onSaveInstanceState(Bundle toSave) {
    super.onSaveInstanceState(toSave);
    toSave.putParcelable("bitmap", bitmap);
  }

在onCreate方法中获取它:

 @Override
  public void onCreate(Bundle savedState) {
    super.onCreate(savedState);
    if (savedState != null) bitmap = savedState.getParcelable("bitmap");
  }

但程序显示“位图无法解析为变量”。我该怎么办? - barzos
1
听起来你需要了解一般的编程知识。你没有发布任何代码,所以dmon给了你一个通用的例子,使用了一个通用的变量名bitmap。请将相机中实际的变量名替换为bitmap。如果我说的不清楚,请在网上查阅一些一般的编程信息。 - Brian Dupuis
我之前按照你说的尝试了,但即使我写了我的位图真实变量名称,结果仍然相同。 - barzos
我需要在使用 onSaveInstanceState() 的同时使用 onRestoreInstanceState() 吗? - barzos
不行。请参考https://dev59.com/Z2855IYBdhLWcg3w5Igb - dmon
真的是一个糟糕的做法,你会得到TransactionTooLargeException错误。 - Pulkit

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接