Java Android方向改变异常

Java Android方向改变异常,java,android,Java,Android,我在安卓系统的屏幕定位方面遇到了困难。我有一个活动,它在用户在设备上绘制签名后捕获签名。对于那个活动,我传递一个可分配的对象,我在oncreate中得到它。当“活动”更改方向时,有时“活动”无法获取可分配对象,并出现异常。我尝试将静态对象用于可包裹对象,但没有任何用处。我尝试了onsaveinstance状态方法和onRetainonConfiguration实例方法 @Override protected void onCreate(Bundle savedInstanceState) {

我在安卓系统的屏幕定位方面遇到了困难。我有一个活动,它在用户在设备上绘制签名后捕获签名。对于那个活动,我传递一个可分配的对象,我在oncreate中得到它。当“活动”更改方向时,有时“活动”无法获取可分配对象,并出现异常。我尝试将静态对象用于可包裹对象,但没有任何用处。我尝试了onsaveinstance状态方法和onRetainonConfiguration实例方法

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.signature_capture_view);
    Bundle bundle = getIntent().getExtras(); 
    info = bundle.getParcelable("info");
    logo= (Bitmap) bundle.get("logo");
}
我的save instance state方法是这样的

@Override
 protected void onSaveInstanceState(Bundle outState) {
 outState.putParcelable("info", info);
 super.onSaveInstanceState(outState);
 }

从onconfiguration changed方法中,我调用setcontentview方法来设置新的布局

@Override
public void onConfigurationChanged(Configuration newConfig) {
    setContentView(R.layout.signature_capture_view);
    super.onConfigurationChanged(newConfig);
}
有时,当方向更改时,setcontentview方法会出现内存不足异常


任何帮助都将不胜感激。提前谢谢

尝试在活动标记的清单中为内存不足错误设置此选项:

android:configChanges="orientation"

尝试在AndroidManifest.xml文件中设置以下android:configChanges属性:

  <activity android:name=".MyActivity"
                  android:label="@string/app_name"
                  android:configChanges="orientation|keyboardHidden">

如果您希望应用程序固定为纵向或横向模式打开,则在活动标签中添加android:screenOrientation:

   <activity android:name=".MyActivity"
              android:label="@string/app_name"
              android:configChanges="orientation|keyboardHidden"
              android:screenOrientation="portrait">


我终于找到了内存不足的答案,在我的签名绘图视图中,我没有检查视图中的位图是否为空,每次设备更改方向时,它都会在视图中创建位图。它产生了OOM。因此,我为位图插入了一个空检查,oom消失了。谢谢你们的快速回复

如果要更改横向/纵向视图,则应按照以下步骤解决内存不足错误

  • 在活动标记的清单中设置此选项
  • android:configChanges=“方向”

  • 积极投入
  • 公共无效OnConfiguration已更改(配置newConfig){


    嗨,娜拉,你为什么不使用android:screenOrientation=“肖像”嗨,Deepak,我还需要横向模式。谢谢你的回复paresh,我的应用程序也需要横向模式。这听起来可能有点愚蠢,但你可以将数据保存到sqllite数据库中。。。
        super.onConfigurationChanged(newConfig);
    
        this.recreate();
    }