Хорошо, ребята, мне действительно нужна помощь. У меня есть опубликованное приложение Auto Inspection, и на моем Droid 4 в реальном мире я нажимаю физическую кнопку «Домой» на моем телефоне, приостанавливая приложение на некоторое время, оно вылетает, когда после onRestoreInstanceState вызывается. Максимум, что я могу понять, это фрагмент, к которому я возвращаюсь, имеет кнопку «Добавить новый автомобиль», которая обновляет следующий фрагмент при нажатии, как только эта кнопка нажата, происходит сбой. Я думаю, это потому, что состояние фрагмента третьего фрагмента потеряно. Приложение всегда работает идеально, пока оно не будет приостановлено на некоторое время. Вот моя трассировка стека:
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());
}
}
Обновление: у меня есть MainActivity с семью статическими фрагментами на ViewPager, у действия нет представлений или страниц, поэтому, когда приложение запускается, первая страница является первым фрагментом. Я удалил все обращения к интерфейсу обратного вызова для обновления третьего фрагмента при нажатии кнопки "+ New Vehicle" эта кнопка находится во втором фрагменте. Теперь приложение работает без сбоев, но нет обновления фрагмента №3. Интерфейсы обратного вызова по-прежнему будут обновлять первый фрагмент, но не третий по какой-то причине, которую я еще не понял, после того, как приложение убито Android, у которого мало памяти, и вы снова щелкаете приложение, чтобы использовать его третий и отдых фрагментов больше не доступны через интерфейсы. Итак, как мне восстановить фрагменты, например, когда приложение запускается при первой его установке или в этом приложении есть кнопка выхода, которая вызывает context.finish после нажатия кнопки выхода, интерфейсы снова работают?
onSaveInstanceState
? - person BananaBuisness   schedule 28.11.2015