Я работаю над приложением, которое сканирует штрих-коды, когда оно получает успешное сканирование, оно покажет диалоговое окно с кодом, который был отсканирован, и в зависимости от того, что содержалось в штрих-коде или QR-коде, оно покажет кнопку, чтобы открыть браузер, отправка SMS и т. д. Когда отображается диалоговое окно, при изменении ориентации экрана происходит сбой. У меня все работает так, что ориентация может измениться пару раз, прежде чем он падает, но когда я проверяю LogCat, он говорит, что исключение NullPointerException вызывает FC. До того, как я реализовал предложения @ CommonsWare, я мог заставить его вращаться произвольное количество раз перед сбоем, но так как я реализовал их, то FC на втором изменении ориентации всегда. Когда я запускаю это в debug mode
, я могу поворачивать телефон столько раз, сколько захочу и так быстро, как хочу, но как только я запускаю его в обычном режиме, он всегда вылетает.
Поле класса:
private String currentType;
Я реализовал onSaveInstanceState()
:
@Override
public void onSaveInstanceState(Bundle outState){
super.onSaveInstanceState(outState);
outState.putString("savedType", currentType);
}
Также onRestoreInstanceState()
:
@Override
public void onRestoreInstanceState(Bundle savedInstanceState){
super.onRestoreInstanceState(savedInstanceState);
currentType = savedInstanceState.getString("savedType");
}
Обновление
Я обновил приведенный выше код до того, каким он является в настоящее время, следуя советам @ CommonsWare. Я также отредактировал свой пост на честность.
Я также использую CM7 (версия Android - 2.3.7, версия ядра - 2.6.37.6-cyanogenmod-g0799e00 android @ portatile # 1, версия мода - CyanogenMod-7-11152011-NIGHTLY-N1, номер сборки - GWK74 ).