Подтвердить что ты не робот

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? К чему это точно относится?

Ваше мнение/опыт будет действительно полезным!

Спасибо!

4b9b3361

Ответ 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 → Редактор → Сохранить действия

Снимите флажок "Организовать импорт". Надеюсь, что это сделает.

После этой настройки он работает для меня.