【发布时间】:2015-09-05 21:17:59
【问题描述】:
我有一个带有一个 View 对象(一个简单的位图)的 RelativeLayout。为了兼容性,我使用 getLayoutParams() 和 setLayoutParams() 来移动它。
但是当从 onSaveInstanceState() 事件内部调用 getLayoutParams() 时(例如,因为屏幕旋转),程序中止并显示消息“应用程序...已意外停止。请重试”。代码:
@Override
protected void onSaveInstanceState(Bundle outState) {
View v=findViewById(R.id.MyView);
RelativeLayout.LayoutParams lp;
lp=(RelativeLayout.LayoutParams)v.getLayoutParams(); // **Exception!!!**
// ... (do something with lp.leftMargin, etc)
super.onSaveInstanceState(outState);
}
这些是相关的异常第一行:
Caused by: java.lang.ClassCastException: android.widget.FrameLayout$LayoutParams
at com.example.Main.onSaveInstanceState(Main.java:85)
at android.app.Activity.performSaveInstanceState(Activity.java:1037)
at android.app.Instrumentation.callActivityOnSaveInstanceState(Instrumentation.java:1181)
at android.app.ActivityThread.performPauseActivity(ActivityThread.java:2336)
在 onCreate() 和 onPause() 事件中也会发生同样的情况。
当我在其他函数(例如计时器事件函数)中使用 getLayoutParams() 时,它可以正常工作。
【问题讨论】:
-
可以分享一下xml文件吗?
标签: java android android-layout exception android-event