2

当我按下主页按钮时,应用程序应该暂停,保存所有状态并正常工作。相反,我收到此错误:

java.lang.RuntimeException:无法暂停活动 {be.test.tester/be.test.tester.DataScreen}:java.lang.IllegalStateException:派生类未在 android.app.ActivityThread.performPauseActivity 调用 super.onSaveInstanceState() (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(Native Method) 在 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:派生类没有在 android.view.View.dispatchSaveInstanceState(View.java:6087) 在 android.view.ViewGroup.dispatchSaveInstanceState(ViewGroup.java:1207) 处调用 super.onSaveInstanceState() 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");

自定义视图正在显示数据(画布)。当您在屏幕上滚动时,自定义视图(set、get 方法)中的数据会发生变化并自行重绘。

我在这里并没有真正管理 onSaveInstanceState ,我真的不知道我是否必须这样做。

我的应用程序位于堆栈顶部,因为:

i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

我不明白这个错误。

4

3 回答 3

5

您应该重写 onSaveInstanceState 并调用其超级方法,如下所示。至少它帮助我解决了同样的问题。

@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
}
于 2011-12-04T18:29:53.317 回答
2

我一直在处理这个问题。在我的应用程序中,主要活动允许调用第二个活动来显示信息/指令等,它还有一个表面视图,用于绘制应用程序的运行时元素。

主要活动有一个变量来保存表面视图,如果在调用信息/指令活动之前尚未设置该变量,我会收到此错误。我只是将表面视图变量赋值移动到主要活动 onCreate 中,一切都很好。

于 2011-05-23T16:48:59.210 回答
0

也有可能使用不调用“super.onSavedInstanceState()”的自定义首选项(例如自定义对话框首选项),这会导致相同的错误。

于 2012-08-20T07:02:55.330 回答