ここで本当に助けが必要です。公開されたアプリの自動検査があり、Droid 4 を実際に使用しているときに、電話の物理的なホームボタンを押してアプリを一時停止すると、onRestoreInstanceState が呼び出された後にクラッシュします。私が理解できるのは、私が戻っているフラグメントに「新しい車両を追加」ボタンがあり、そのボタンをクリックするとすぐに次のフラグメントが更新され、クラッシュすることです。3番目のフラグメントのフラグメント状態が失われているためだと思います。アプリは、一定期間一時停止するまで、常に完璧に機能します。ここに私のスタックトレースがあります:
java.lang.NullPointerException
at pete01507.AutoInspection.af.a(Unknown Source)
at pete01507.AutoInspection.MainActivity.a(Unknown Source)
at pete01507.AutoInspection.ae.onClick(Unknown Source)
at android.view.View.performClick(View.java:4106)
at android.view.View$PerformClick.run(View.java:17052)
at android.os.Handler.handleCallback(Handler.java:615)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5059)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:792)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:555)
at dalvik.system.NativeStart.main(Native Method)
どんな助けでも大歓迎です。ありがとう
onRestoreInstanceState は次のとおりです。
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
Log.d(TAG, "onRestoreInstanceState");
if (savedInstanceState == null) {
Log.d(TAG, "Restore onSaveInstanceState was empty");
car="";
fresh=false;
}else{
Log.d(TAG, "Restore onSaveInstanceState else was not empty");
car = (String) savedInstanceState.get("car");
load();
mViewPager.setCurrentItem(savedInstanceState.getInt("vp"));
}
}
onSaveInstanceState は次のとおりです。
@Override
public void onSaveInstanceState(Bundle savedInstanceState) {
super.onSaveInstanceState(savedInstanceState);
Log.d(TAG, "onSaveInstanceState");
if (car.equals("")){
Log.d(TAG, "onSaveInstanceState car not loaded");
} else {
Log.d(TAG, "onSaveInstanceState car is loaded");
savedInstanceState.putString("car", car);
savedInstanceState.putInt("vp", mViewPager.getCurrentItem());
}
}
アップデート:ViewPager に 7 つの静的フラグメントを持つ MainActivity があるため、アクティビティにはビューやページがないため、アプリが最初のページを開始すると最初のフラグメントになります。「+ New Vehicle」ボタンがクリックされたときに 3 番目のフラグメントを更新するために、コールバック インターフェイスへのすべての呼び出しを削除しました。このボタンは 2 番目のフラグメントにあります。アプリはクラッシュすることなく動作するようになりましたが、フラグメント #3 への更新はありません。コールバック インターフェイスは引き続き最初のフラグメントを更新しますが、何らかの理由で 3 番目のフラグメントは更新しませんが、Android のメモリ不足によってアプリが強制終了された後、3 番目のフラグメントを使用して残ります。のフラグメントは、インターフェイス経由でアクセスできなくなりました。