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(ネイティブ メソッド) で 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.ViewGroup.dispatchSaveInstanceState(ViewGroup.java:1207) で android.view.View.dispatchSaveInstanceState(View.java:6087) で 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

私はちょうどこの問題に取り組んできました。私のアプリでは、メインアクティビティを使用して、情報や指示などを表示するために2番目のアクティビティを呼び出すことができます。また、アプリのランタイム要素を描画するサーフェスビューもあります。

メインアクティビティにはサーフェスビューを保持する変数があります。info/instructionsアクティビティが呼び出される前にその変数が設定されていない場合、このエラーが発生します。サーフェスビュー変数の割り当てをメインアクティビティonCreateに移動するだけで、すべてうまくいきます。

于 2011-05-23T16:48:59.210 に答える
0

同じエラーにつながる "super.onSavedInstanceState()" を呼び出さないカスタム設定 (カスタム ダイアログ設定など) を使用することも可能です。

于 2012-08-20T07:02:55.330 に答える