#android
#Android
Вопрос:
Есть ли какая-либо причина не использовать R.id .<id_name> в качестве константы в моем коде?
Например, в моем ids.xml файл, который у меня есть:
<item name="status_running" type="id"/>
<item name="status_finished" type="id"/>
<item name="status_error" type="id"/>
что позволяет мне делать такие вещи, как:
switch (status) {
case R.id.status_running:
mProgressTextView.setText("Running");
break;
case R.id.status_finished:
mProgressTextView.setText("Finished");
setNextSyncTime();
break;
case R.id.status_error:
mProgressTextView.setText("Error: " intent.getStringExtra(Intent.EXTRA_TEXT));
break;
default:
break;
}
Есть причины не использовать R.id подобные значения?
Ответ №1:
Использование подобных идентификаторов кажется разумным. Единственной проблемой с вашим примером кода могут быть недавние изменения в системе сборки Android. Идентификаторы ресурсов в библиотечных проектах больше не являются константами и не могут использоваться в операторах switch.
Это повлияло бы на вас, только если бы этот код собирался быть частью проекта библиотеки, по крайней мере, что-то, что следует учитывать.
Смотрите сообщение в блоге Изменения в проектах библиотеки в Android для получения полной информации.
Комментарии:
1. Ах да — я знал, что где-то читал что-то о том, что они не являются константами. спасибо 🙂
Ответ №2:
Вы пытаетесь получить доступ к значению имени в качестве идентификатора… Вы должны установить значение для id.
Поскольку вы используете список элементов (я полагаю), вы должны получить к нему доступ другим способом.
Комментарии:
1. Нет — это не зависит ни от какого пользовательского интерфейса. идентификатор — это значение int в R.java файл, и я использую это значение int в качестве идентификатора в моем коде. Я хочу знать, есть ли какая-либо причина, по которой я не знаю, почему я не должен этого делать, вместо того, чтобы писать код типа
final static int something = 0x4;
Ответ №3:
Пока вы не сохраняете его в базе данных, это просто константа int, как и любая другая. Но если вы сохраните это значение (например, file или db), вы можете столкнуться с проблемами, поскольку значения идентификатора AFAIK могут меняться между сборками.