Intereting Posts
Простой пример использования SwipeRefreshLayout с ListView Создайте ошибку, ссылаясь на файл build.xml и proguard: «null null: 1» Использование OpenMAX (IL?) Для декодирования аудио / видео на Android Немедленно покажите автозаполнение на Android Android Studio: как отладить запущенный процесс на Android-устройстве? Как сохранить пробелы в конце и / или в начале строки? Как компилятор JIT помогает производительности приложений? ArrayAdapter в android для создания простого списка Приложение всегда запускается из корневой активности, а не возобновляет фоновое состояние (известная ошибка) Как определить, расширен ли SearchView? Показать мягкую клавиатуру в AlertDialog с помощью WebView внутри (Android) Как установить ширину и высоту DialogFragment? Пинч-зум для пользовательского просмотра Элементы меню «Ящик навигации», выбранные в разных группах FragmentActivity: нельзя отбрасывать из фрагмента в производный класс

Что лучше android.R или пользовательские R?

Когда я начал разрабатывать приложения для Android, у меня была тенденция определять пользовательские значения R везде, где мне нужно, в частности в файлах макета. Например:

findViewById(R.id.customerName).setText(customer.getName()) 

С макетом:

 <TextView android:text="TextView" android:id="@id/customerName" android:layout_height="wrap_content" android:layout_width="fill_parent" /> 

Теперь я понимаю, лучше было бы использовать android.R .

 findViewById(android.R.id.text1).setText(customer.getName()) 

С макетом:

 <TextView android:text="TextView" android:id="@android:id/text1" android:layout_height="wrap_content" android:layout_width="fill_parent" /> 

Какую практику вы придерживаетесь? Каковы преимущества и недостатки каждого?

Solutions Collecting From Web of "Что лучше android.R или пользовательские R?"

android.R предназначен для использования ресурсов, встроенных в операционную систему.

Существует много изображений / макетов / и т. Д., Которые поставляются с операционной системой, которую вы можете просто ссылаться с помощью android.R

Если вы ссылаетесь на свои собственные ресурсы, которые вы создали, большинство из них всегда используют R. и в большинстве случаев я рекомендую стараться держаться подальше от встроенных ресурсов, поскольку они меняют версию на версию.

Настраиваемый. Системные ID имеют риск обращения в коде к ресурсу, отсутствующему в проекте. Таможенные идентификаторы существуют, если есть соответствующий ресурс – доступный, вид, макет или что у вас есть.

Вам нужен ваш собственный класс R.java, так как он содержит ссылки на все ваши ресурсы (макеты, изображения, строки и т. Д.).

Если вы хотите получить ссылку на представление с идентификатором «myView», вы должны использовать R.id.myView. Если вы хотите получить ссылку на встроенные ресурсы Android, вы должны использовать android.R.id.text

Взгляните на следующую страницу:

http://developer.android.com/guide/topics/resources/accessing-resources.html

Не существует большого преимущества или недостатка идентификатора фрейма и пользовательского идентификатора в макетах.

Преимущества использования идентификаторов фреймов:

  • Избегайте создания большего количества идентификаторов. Сохраняет одно поле в apk (и существует ограничение размера apk).
  • Должен использоваться в некоторых ситуациях, например ListActivity

Недостатки использования идентификаторов фреймов:

  • Не указывайте описательное имя

В обеих практиках

  • Код будет работать в будущем
  • Отсутствующие ссылки обнаруживаются во время выполнения и скрыты во время компиляции

Я думал, что образцы в SDK помогут мне принять решение, и (угадайте, что?) Это не так. Приложения Notepad и LunarLander используют android.R.id для идентификаторов вида, тогда как проект ApiDemos использует пользовательские идентификаторы.

Лучшая практика для GestureBuilder, которая смешивает оба подхода? ( @+id/addButton и @android:id/empty )

IHMO, худшая практика для HelloActivity и JetBoy, которые определяют @+id/text @+id/Button01 … Это не описательно и может быть заменено на ( @andoid:id/button1 или by @+id/startButton )