我在Android中遇到屏幕方向很难。我有一个活动,在用户在设备上绘制签名后捕获签名。对于那个活动,我传递了一个可以参与的对象,我在oncreate中得到它。当活动更改方向时,活动有时无法获取parceable对象并给出异常。我尝试使用静态对象作为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 changed方法我调用setcontentview方法来设置一个新的布局。
@Override
public void onConfigurationChanged(Configuration newConfig) {
setContentView(R.layout.signature_capture_view);
super.onConfigurationChanged(newConfig);
}
有时当方向更改时,setcontentview方法会发生内存不足异常。
非常感谢任何帮助。提前致谢。
答案 0 :(得分:2)
尝试在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">
答案 1 :(得分:1)
如果要更改横向/纵向视图,则应按照以下步骤解决内存不足错误。
机器人:configChanges = “取向”
public void onConfigurationChanged(Configuration newConfig){
super.onConfigurationChanged(newConfig);
this.recreate();
}
答案 2 :(得分:0)
尝试在活动标记的清单中设置此内存错误:
android:configChanges="orientation"
答案 3 :(得分:0)
我终于找到了内存不足的答案。在我的签名图纸视图中,我没有检查视图中的位图是否为null,每次设备更改方向时它会在视图中创建位图。它会产生OOM。所以我为位图插入了一个空检查,并且oom消失了。谢谢你的快速回复。