У меня проблема при повороте моего приложения для Android после выполнения некоторых базовых действий, я продолжаю получать нулевую ошибку;
java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.View android.view.View.findViewById(int)' on a null object reference
Хотя я знаю, что означает ошибка, я не вижу причин, по которым это может произойти при повороте устройства (происходит как на моем физическом устройстве разработчика, так и в эмуляторе). Код, на который он жалуется, (который находится в моем методе onAttach во фрагменте);
TextView totalMatchGoals = (TextView) getView().findViewById(R.id.txtResInfoGoals);
При вращении устройства изображение обновляется? Даже тогда я не могу понять, почему это может вызвать проблемы.
Любая помощь приветствуется.
Проверяйте внутри onCreateView() после расширения макета или onViewCreated(), когда представления действительно существуют.
Не сопротивляйтесь, изучите еще немного и подумайте: вы пытаетесь получить представление. Когда вы поворачиваете устройство, вид и действия уничтожаются, поэтому создается новый экземпляр активности и фрагмента. Никогда не пытайтесь получить представления внутри onAttach(), поскольку этот метод используется только для привязки фрагмента к активности размещения, если последняя реализует интерфейс фрагмента. Вместо этого сделайте это одним из упомянутых мною методов.
Если вы не настроили AndroidManifest.xml для других действий, Android уничтожит и воссоздает всю вашу активность при обнаружении изменения ориентации.
При воссоздании действия onAttach вызывается перед заполнением представления, согласно: https://developer.android.com/reference/android/app/Fragment.html
Если вы хотите обработать изменение ориентации в коде вашей деятельности, добавьте следующее:
AndroidManifest.xml
<activity
android:name = "<your-activity>"
android:configChanges = "orientation|screenSize"
...
В своем классе Activity переопределите этот метод, чтобы справиться с изменением ориентации:
@Override
public void onConfigurationChanged(Configuration newConfig) {}
Больше информации:
Спасибо. При вызове этого findViewById, если я не поворачиваю представление, он работает нормально, где я борюсь, почему он работает в onAttach, но когда я его поворачиваю, это не так.