English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Решение проблемы с ключом метода setTag в Android

При разработке класса View в Android, чтобы хранить некоторые вспомогательные данные, был разработан метод setTag/getTag. Это напомнило мне о том, что в设计中 Winform у каждого Control также есть Tag.

Сегодня хочу рассказать о проблеме с методом setTag, с которой я столкнулся, изучая Android. В большинстве случаев нам достаточно использовать метод setTag с одним параметром. Но иногда нам нужно хранить несколько данных, и в этом случае нам нужно использовать перегруженный метод с ключом.

Документ описывает: «Указанный ключ должен быть идентификатором, объявленным в ресурсах приложения, чтобы обеспечить его уникальность (смотрите тип ресурса ID). Ключи, идентифицированные как принадлежащие фреймворку Android или не связанные с какой-либо пакетом, вызовут выброс IllegalArgumentException.»

Здесь указывается, что ключ должен быть уникальным, но если мы используем java константу для определения ключа (private static final int TAG_ID = 1;), то мы все равно встретим такую ошибку:

java.lang.IllegalArgumentException: The key must be an application-specific resource id

Правильное решение:

Определите этот ключ как постоянную переменную в res/values/strings.xml, например:

  <resources>
    <item type="id" name="tag_first"></item>
    <item type="id" name="tag_second"></item>
  </resources>

Использование:

  imageView.setTag(R.id.tag_first, "Hello");
  imageView.setTag(R.id.tag_second, "Success");

Вот решение проблемы с методом key в Android setTag, спасибо всем за поддержку нашего сайта!

Декларация: содержимое этой статьи получено из Интернета, авторские права принадлежат соответствующему автору, материал был предложен пользователями Интернета и загружен самостоятельно, сайт не обладает правами собственности, материал не был отредактирован вручную, и сайт не несет ответственности за соответствующие юридические вопросы. Если вы обнаружите материалы,涉嫌侵犯版权, пожалуйста, отправьте письмо по адресу: notice#oldtoolbag.com (во время отправки письма, пожалуйста, замените # на @) для жалоб, и предоставьте соответствующие доказательства. При обнаружении фактов, сайт незамедлительно удалят материалы,涉嫌侵权.

Вам может понравиться