问题描述
|
我在Android的屏幕方向上遇到了麻烦。我有一个活动,可以在用户在设备上绘制其签名后捕获签名。对于该活动,我传递了一个可仿造的对象,并将其放入oncreate中。当活动改变方向时,有时活动无法获得可模仿的对象并给出异常。我尝试将静态对象用于parceable对象,但没有用。我也尝试了onsaveinstance状态方法和onRetainNonConfigurationInstance方法。
@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\");
}
我的保存实例状态方法是这样的;
@Override
protected void onSaveInstanceState(Bundle outState) {
outState.putParcelable(\"info\",info);
super.onSaveInstanceState(outState);
}
从onconfiguration更改的方法中,我调用setcontentview方法以设置新的布局。
@Override
public void onConfigurationChanged(Configuration newConfig) {
setContentView(R.layout.signature_capture_view);
super.onConfigurationChanged(newConfig);
}
有时,当方向更改时,setcontentview方法会发生内存不足的异常。
任何帮助将不胜感激。提前致谢。
解决方法
尝试在AndroidManifest.xml文件中设置以下android:configChanges属性:
<activity android:name=\".MyActivity\"
android:label=\"@string/app_name\"
android:configChanges=\"orientation|keyboardHidden\">
而且,如果您希望将应用程序固定为以“纵向”或“横向”模式打开,请在activity标签内添加android:screenOrientation:
<activity android:name=\".MyActivity\"
android:label=\"@string/app_name\"
android:configChanges=\"orientation|keyboardHidden\"
android:screenOrientation=\"portrait\">
, 如果要更改横向/纵向视图,则应按照以下步骤解决内存不足错误。
在活动标签的清单中进行设置
android:configChanges = \“方向\”
在Anctivity中
公共无效onConfigurationChanged(Configuration newConfig){
super.onConfigurationChanged(newConfig);
this.recreate();
}
, 尝试在活动标签上的清单中设置此选项,以解决内存不足错误:
android:configChanges=\"orientation\"
, 我终于找到了内存不足的答案,在我的签名绘图视图中,我没有检查视图中的位图是否为空,并且每次设备更改方向时,它都会在视图内部创建位图。并生成OOM。因此,我为位图插入了一个空检查,并且oom消失了。感谢您的快速答复。