当我按下主页按钮时,应该暂停应用程序,保存所有状态并正常工作。 相反,我得到了这个错误:
java.lang.RuntimeException:无法执行 暂停活动 {be.test.tester / be.test.tester.DataScreen}: java.lang.IllegalStateException: 派生班没有打电话 super.onSaveInstanceState()at android.app.ActivityThread.performPauseActivity(ActivityThread.java:3641) 在 android.app.ActivityThread.performPauseActivity(ActivityThread.java:3598) 在 android.app.ActivityThread.handlePauseActivity(ActivityThread.java:3574) 在 android.app.ActivityThread.access $ 2500(ActivityThread.java:136) 在 android.app.ActivityThread $ H.handleMessage(ActivityThread.java:2186) 在 android.os.Handler.dispatchMessage(Handler.java:99) 在 android.os.Looper.loop(Looper.java:143) 在 android.app.ActivityThread.main(ActivityThread.java:5068) 在 java.lang.reflect.Method.invokeNative(母语 方法)at java.lang.reflect.Method.invoke(Method.java:521) 在 com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:858) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 在 dalvik.system.NativeStart.main(母语 方法)
引起: java.lang.IllegalStateException: 派生班没有打电话 super.onSaveInstanceState()at android.view.View.dispatchSaveInstanceState(View.java:6087) 在 android.view.ViewGroup.dispatchSaveInstanceState(ViewGroup.java:1207) 在 android.view.ViewGroup.dispatchSaveInstanceState(ViewGroup.java:1207) 在 android.view.View.saveHierarchyState(View.java:6068) 在 com.android.internal.policy.impl.PhoneWindow.saveHierarchyState(PhoneWindow.java:1475) 在 android.app.Activity.onSaveInstanceState(Activity.java:1106) 在 android.app.Activity.performSaveInstanceState(Activity.java:1056) 在 android.app.Instrumentation.callActivityOnSaveInstanceState(Instrumentation.java:1289) 在 android.app.ActivityThread.performPauseActivity(ActivityThread.java:3623) ......还有12个
我的活动在触摸时做出反应:
public class DataScreen extends Activity implements OnGestureListener{
我从意图中得到了一些额外的东西:
totUsage = Integer.parseInt(getIntent().getStringExtra("extraTotUsage"));
limit = Integer.parseInt(getIntent().getStringExtra("extraLimit"));
Bundle bundle = getIntent().getExtras();
mylist = (ArrayList<HashMap<String, String>>) bundle.get("extraMyList");
自定义视图显示数据(画布)。当您在屏幕上滚动时,数据会在自定义视图中更改(设置,获取方法)并重绘自身。
我在这里没有真正管理onSaveInstanceState,不知道我是否必须这样做。
我的应用程序是堆栈的顶部,因为:
i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
我不明白错误。
答案 0 :(得分:5)
你应该覆盖onSaveInstanceState并调用它的super方法,如下所示。至少它帮助我解决了同样的问题。
@Override
public void onSaveInstanceState(Bundle savedInstanceState) {
super.onSaveInstanceState(savedInstanceState);
// your stuff or nothing
}
@Override
public void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
// your stuff or nothing
}
答案 1 :(得分:2)
我刚刚处理过这个问题。在我的应用程序中,主活动允许调用第二个活动来显示信息/指令等,它还有一个表面视图,用于绘制应用程序的运行时元素。
主活动有一个变量来保存表面视图,如果在调用info / instructions活动之前没有设置该变量,我会收到此错误。我只是将表面视图变量赋值移动到主要活动onCreate上,一切都很好。
答案 2 :(得分:0)
也可能使用不调用“super.onSavedInstanceState()”的自定义首选项(例如自定义对话框首选项),这会导致相同的错误。