按下Home后应用程序崩溃.无法暂停 - 派生类没有调用super.onSaveInstanceState()

use*_*302 2 android super illegalstateexception android-homebutton

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

java.lang.RuntimeException:无法暂停活动{be.test.tester/be.test.tester.DataScreen}:java.lang.IllegalStateException:派生类未在android.app.ActivityThread.performPauseActivity中调用super.onSaveInstanceState() (ActivityThread.java:3641)位于android.app.A活动时的android.app.ActivityThread.performPauseActivity(ActivityThread.java:3598),android.app.A活动.事件(ActivityThread.java:3574),android.app.ActivityThread.access $ 2500(ActivityThread.java) :136)在android.app.A.运行时,Android.O.Roper.loop(Looper.java:143)的android.app.Handler.dispatchMessage(Handler.java:99)上的android.app.ActivityThread $ H.handleMessage(ActivityThread.java:2186)在android.app.ActivityThread.main(ActivityThread.java:5068)的java.lang.reflect.Method.invokeNative(Native Method),位于com.android的java.lang.reflect.Method.invoke(Method.java:521) .internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:858)位于dalvik.system.NativeStart.mai的com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)n(原生方法)

引起:java.lang.IllegalStateException:派生类没有在android.view.ViewGroup.dispatchSaveInstanceState(ViewGroup.java:1207)的android.view.View.dispatchSaveInstanceState(View.java:6087)中调用super.onSaveInstanceState() android.view.ViewGroup.dispatchSaveInstanceState(ViewGroup.java:1207)at android.view.View.saveHierarchyState(View.java:6068)at com.android.internal.policy.impl.PhoneWindow.saveHierarchyState(PhoneWindow.java:1475)在android.app.A活动状态(Activity.java:1056)的android.app.A活动中的android.app.A活动状态(Activity.java:1056)的android.app.A活动状态中的android.app.Activity.onSaveInstanceState(Activity.java:1106). ActivityThread.performPauseActivity(ActivityThread.java:3623)...还有12个

我的活动在触摸时做出反应:

public class DataScreen extends Activity implements OnGestureListener{   
Run Code Online (Sandbox Code Playgroud)

我从意图中获得了一些额外的东西:

totUsage = Integer.parseInt(getIntent().getStringExtra("extraTotUsage"));
    limit = Integer.parseInt(getIntent().getStringExtra("extraLimit"));
    Bundle bundle = getIntent().getExtras();
    mylist = (ArrayList<HashMap<String, String>>) bundle.get("extraMyList");
Run Code Online (Sandbox Code Playgroud)

自定义视图显示数据(画布).在屏幕上滚动时,数据会在自定义视图(set,get方法)中更改并重绘自身.

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

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

i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
Run Code Online (Sandbox Code Playgroud)

我不明白这个错误.

Chr*_*ian 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
}
Run Code Online (Sandbox Code Playgroud)

  • 如果这解决了问题("没有"),它似乎是android代码中的一个错误的证据..我不想说,但它让我担心其他错误的保证.. (4认同)