#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()
.