Method invocation may produce java lang nullpointerexception

Method invocation may produce java lang nullpointerexception

У меня есть код:

и я получаю предупреждение

Как я могу исправить это PLS?

Ваш курсор не может быть null , он всегда будет иметь значение. Но курсор может быть пустым, поэтому сначала вы должны перейти к первой строке в курсоре с помощью метода moveToFirst() , а если он возвращает true — это означает, что курсор имеет хотя бы одну строку, поэтому вы можете сделать с ней все, что хотите, если он возвращает false — это означает, что для вашего запроса ничего не существует, поэтому у вас нет строк для получения данных. Ваш код должен выглядеть так:

Решение 1. Поскольку вы жестко кодируете SQL, почему бы не жестко кодировать индекс

Метод getColumnIndexOrThrow будет вызывать IllegalArgumentException, если столбец не существует.

В activity_main.xml отображаю view :

В методе onCreate внутри Activity :

Но при вызове любого метода у textEditText Android Studio предупреждает, что

Method invocation . may produce ‘java.lang.NullPointerException’

Разве такой исход возможен? Или это ошибка?

3 ответа 3

Это предупреждение означает, что на момент вызова textEditText.method(); в переменной textEditText может находиться null . Например, вследствии того, что findViewById перед этим не смог найти в вашем леяуте View для указанного id . В таком случае в textEditText запишется null

Чтобы действительно получить null вместо EditText из вашей разметки, нужно заставить запуститься метод onCreate без отображения активити на экране. Например так:

  1. Создаём в классе активити дефолтный конструктор.
  2. В нём вызываем onCreate
  3. В onCreate создаём экземпляр класса активити.
  4. Вуаля — при создании экземпляра вызовется onCreate и приложение упадёт.

Упасть оно, конечно, может уже и на setContentView . Я не проверял, конечно же, свою идею.
Ещё оно, вроде, так ещё и в рекурсию может уйти, если, вдруг, не упадёт)

Читайте также:  Assassins creed rogue морриган

Думаю студия как раз таки учитывает возможность вызова к-л метода из конструктора и просто не знает, что конструктор у активити переопределять и использовать не надо и ваш код в нормальных условиях падать не должен.

method invocation setIcon may produce java.lang.NullPointerException ?

I’m getting this message when setting icons to a tab layout.

5 Answers 5

Something like this should fix your warning:

You need to check that tabLayout is not null

And also check that whatever getTabAt returns is not null

BTW, you probably have some misconfiguration on your IDE since this is usually a warning, not an error.

You need to check that getTabAt(x) returns is not null:

You are facing this issue because you have not added tabs and try to set icon

When your setIcon method called before the tabLayout is setup with tabLayout.setupWithViewPager(viewPager); , this will throw a null pointer exception in runtime.

To fix the run time error, you should call setupTabIcons() after your tabLayout.setupWithViewPager(viewPager); line in onCreate method of the activity.

But this still shows the warning in android studio, so to remove the warning and also prevent run time error, you should change your code to get tab index instead of setting it manually such as 0,1,2 as in your .getTabAt(0) , .getTabAt(1) , .getTabAt(2) parts

For the clearance, I will put an example from my code:

Note: Please make sure to have equal amount of icons in tabIcons array as you are creating tabs.

Ссылка на основную публикацию
Adblock detector