it-swarm.com.ru

импорт Android.R в Eclipse: почему?

Выдержка из документация :

Eclipse иногда любит добавлять оператор импорта Android.R вверху ваших файлов, которые используют ресурсы, особенно когда вы просите Eclipse сортировать или иным образом управлять импортом. Это приведет к поломке вашей марки. Посмотрите на эти ошибочные операторы импорта и удалите их.

Мой вопрос: ПОЧЕМУ? Почему Eclipse продолжает это делать?

Я уже довольно давно занимаюсь разработкой приложений для Android с использованием Eclipse, но я так и не смог понять, почему Eclipse делает такие вещи.

Когда я использую Ctrl + Shift + O Для организации моих операторов импорта автоматически добавляется import Android.R. И вдруг мой правильный код внезапно покрывается красными ошибками, говоря, что R не может быть решена . Это может стать действительно страшным для новичка, поскольку он понятия не имеет, что он сделал неправильно.

В другом сценарии предположим, что что-то не так с моими файлами макетов, и R.Java не генерируется, он говорит, что R не может быть разрешен , как R.Java не был создан из-за ошибок. Когда я перемещаю курсор к любой из ошибок, он предлагает мне import Android.R.

Проработав некоторое время над Android, я знаю, что никогда не импортировать Android.R, но я так и не смог понять, почему Eclipse продолжает работать. Предложив это, честно говоря, добавление импорта Android.R никогда не решало ни одной моей проблемы. Это только добавило к существующим проблемам, которые были действительно болезненными в первые дни разработки.

Итак, кто-нибудь знает причину, по которой Eclipse предлагает сделать неверный импорт? Это просто ошибка? Я не думаю, что это ошибка, так как она была бы исправлена, по крайней мере, после того, как она была упомянута в документации Android.

Если это не ошибка, то какова реальная цель Android.R? К чему это конкретно относится?

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

Спасибо!

19
Swayam

Это не ошибка. Есть несколько случаев, когда 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 будет иметь те же ресурсы, что и вы, и это вызовет еще один набор ошибок.

12
Raghav Sood

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

3
LilkeMan

Попробуй это...

Окно -> Настройки -> Java -> Редактор -> Сохранить действия

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

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

0
hassan yang