#java #android #android_studio
В activity_main.xml отображаю view :В методе onCreate внутри Activity: setContentView(R.layout.activity_main); EditText textEditText = (EditText)findViewById(R.id.textEditText); textEditText.method(); Но при вызове любого метода у textEditText Android Studio предупреждает, что Method invocation ... may produce 'java.lang.NullPointerException' Разве такой исход возможен? Или это ошибка?
Ответы
Ответ 1
Это предупреждение означает, что на момент вызова textEditText.method(); в переменной textEditText может находиться null. Например, вследствии того, что findViewById перед этим не смог найти в вашем леяуте View для указанного id. В таком случае в textEditText запишется nullОтвет 2
Чтобы действительно получить null вместо EditText из вашей разметки, нужно заставить запуститься метод onCreate без отображения активити на экране. Например так: Создаём в классе активити дефолтный конструктор. В нём вызываем onCreate В onCreate создаём экземпляр класса активити. Вуаля - при создании экземпляра вызовется onCreate и приложение упадёт. Упасть оно, конечно, может уже и на setContentView. Я не проверял, конечно же, свою идею. Ещё оно, вроде, так ещё и в рекурсию может уйти, если, вдруг, не упадёт) Думаю студия как раз таки учитывает возможность вызова к-л метода из конструктора и просто не знает, что конструктор у активити переопределять и использовать не надо и ваш код в нормальных условиях падать не должен.Ответ 3
Из комментариев становится ясным, что в данном примере NPE произойти не может и можно смело игнорировать это предупреждение.
Комментариев нет:
Отправить комментарий