Import android.R в Eclipse: Почему?
Отрывок из документации:
Eclipse иногда любит добавлять импортную версию android.R на поверх ваших файлов, которые используют ресурсы, особенно когда вы спрашиваете eclipse сортировать или иным образом управлять импортом. Это приведет к тому, что ваш ломать. Следите за этими ошибочными операциями импорта и удаляйте их.
Мой вопрос: ПОЧЕМУ? Почему затмение продолжает это делать?
Я уже давно разрабатываю приложения для Android, использующие Eclipse, но я никогда не мог понять, почему такое затмение делает такую вещь.
Когда я использую Ctrl + Shift + O для упорядочивания операторов импорта, автоматически добавляется import android.R
. И вдруг мой правильный код внезапно покрывается красными ошибками, говоря, что R не может быть разрешен. Это может стать очень страшным для новичка, поскольку он понятия не имеет, что он сделал неправильно.
В другом сценарии предположим, что что-то не так с моими файлами макета, и R.java
не создается, он говорит, что R не может быть разрешен, поскольку R.java не был создан из-за ошибки. Когда я перемещаю курсор на любую из ошибок, он предлагает мне import android.R
.
После работы с Android уже довольно давно я знаю, что никогда импортировать android.R, но я никогда не мог понять, почему eclipse продолжает предлагать это, так как, честно говоря, добавление import android.R никогда не решал мою проблему. Это просто добавило к существующим проблемам, которые в первые дни разработки были очень болезненными.
Итак, кто-нибудь знает причину затмения, предлагая сделать неправильный импорт? Это просто ошибка? Я не думаю, что это ошибка, поскольку она была бы исправлена, по крайней мере, после того, как она была упомянута в документации на Android.
Если это не ошибка, то какова реальная цель android.R
? К чему это точно относится?
Ваше мнение/опыт будет действительно полезным!
Спасибо!
Ответы
Ответ 1
Это не ошибка. Есть несколько примеров, когда android.R
может быть полезным и решать проблемы.
android.R
- это файл R.java, такой как тот, который у вас есть в ваших собственных проектах. В ваших проектах (your.packagename.R
) содержатся ссылки на ресурсы, которые у вас есть в вашей папке /res
, такие как макеты, чертежи, файлы XML, необработанные файлы, строки и т.д.
С другой стороны, файл android.R
содержит ссылки на определенные ресурсы по умолчанию, которые Android встроил, например simple_list_item_1
.
Eclipse предлагает это и автоматически импортирует это, как если бы ваш R файл проекта не был создан из-за ошибки XML или чего-то еще, ваш код будет ссылаться на файл, который не существует. Импортируя android.R
, eclipse гарантирует, что ваш код ссылается на класс, который существует. Однако android.R
вряд ли будет иметь те же ресурсы, что и вы, и это вызовет еще один набор ошибок.
Ответ 2
Eclipse также всегда будет пытаться автоматически импортировать android.R в свой класс, если вы переименуете имя своего пакета с помощью инструментов Android, а не переименуете имя базового пакета в свой код с тем же именем, потому что он предположим, что у вас есть два R в вашем файле.
Ответ 3
Попробуйте это...
Окно → Prefs → Java → Редактор → Сохранить действия
Снимите флажок "Организовать импорт". Надеюсь, что это сделает.
После этой настройки он работает для меня.