Android: View.getTag/setTag и IllegalArgumentException

Да, я знаю, что вам нужен уникальный идентификатор ресурса при вызове версии этих функций, для которой требуется ключ, но я не могу на всю жизнь понять, как создать идентификатор ресурса, который можно использовать таким образом. Конечная переменная в моем классе не будет работать, и ни одно из них не будет жестко закодированным. Оба бросили исключение IllegalArgumentException. Итак, что дает, как вы используете эти методы?

Spara

Ответ 1

Из Javadoc:

Указанный ключ должен быть объявлен в ресурсах приложения, чтобы убедиться, что он уникален.

Таким образом, вы не можете просто создавать значения и размещать их в локальной переменной.

Каждый ресурс, который вы создаете, будь то строка (R.string.*) или макет (R.layout.*) или отдельный View (R.id.*), может иметь идентификатор. Это то, что вы должны делать уже.

Если вам нужно сохранить несколько объектов против одного View, тогда вам нужно использовать вариант R.id в качестве ключа, например someView.setKey(R.id.my_key_1, someObject).

Ответ 2

Чтобы создать идентификатор ресурса, который можно использовать идентично тем, которые вы установили в XML (с помощью @+id), добавьте

<resources>
    <item type="id" name="myId"/>
</resources>

в XML в res/values/.

Ответ 3

Вы можете использовать этот код:

<resources xmlns:android="http://schemas.android.com/apk/res/android">
  <item name="TAG_ONLINE_ID" type="id"/>
</resources>