getTag = нулевой указатель

#android

#Android

Вопрос:

Я продолжаю получать нулевой указатель для этой части кода.

 private OnClickListener fButton = new OnClickListener() {
     public void onClick(View v) {
         Intent myIntent = new Intent(Intent.ACTION_VIEW);
         int intID = (Integer) v.getTag();
         String finalUrl = mInfo.get(intID).final_url;
         myIntent.setData(Uri.parse(finalUrl));
         startActivity(myIntent);

     }
};
 

Комментарии:

1. Вы установили fButton.setTag(intID)?

2. Не могли бы вы добавить трассировку стека?

3. @GilMoshayof v не может быть нулевым, поскольку является аргументом onClick

4. извините за неясность, Гил Мошайоф прав. Я получаю исключение нулевого указателя из этой строки, если быть точным: int intID = (целое число) v.getTag();

5. Вы устанавливали tag перед вызовом getTag?

Ответ №1:

это для функции автоматической упаковки / распаковки java. Доступ к объекту, который вы преобразуете в object, осуществляется для получения значения int, в данном случае корыта integerInstance.intValue() . Если вы забыли установить tag, возвращаемое значение будет равно null, что приведет к NPE.

Вы должны проверить наличие нулевых значений.

 int intID = (v.getTag() == null) ? -1 : (Integer) v.getTag();
 

Комментарии:

1. Вы правы, я забыл установить тег для кнопки. Хотелось бы, чтобы у меня было 2 правильных ответа на blackbelt и deacoy

Ответ №2:

Попробуйте установить yourView.setTag() перед получением yourView.getTag() .