Що таке R:
У R. немає нічого дуже загадкового. Це просто клас, який має безліч статичних підкласів, відкрийте його в затемненні і подивіться (його під gen /).
Кожен член цього класу - це одна з двох речей: 1) статичні кінцеві класи або 2) статичні кінцеві цілі числа, які є унікальними щодо інших членів свого класу.
Чому це так загадково:
легко заплутатися, оскільки R автоматично генерується мурашкою. Це загадково, тому що ви не повинні "торкатися" його вручну (звичайно, можете, але ваші зміни будуть автоматично стерті при регенерації). Це додатково загадково, оскільки іноді затемнення автоматично імпортує стандартний файл R для android (як обговорювалося у відповідях вище)
Чому це завжди перше, що не може бути вирішене: R точно відповідає правилам класів і пакетів Java, немає нічого особливого в тому, як R діє щодо імпорту. R буде автоматично розміщено в пакеті, вказаному елементом пакета у вашому файлі маніфесту
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="package.which.will.contain.R.and.probably.the.main.package.in.the.application" android:versionName="8.6.2011" android:versionCode="1">
<uses-sdk android:minSdkVersion="13" />
Щоб побачити, до якого пакету належить ваш файл R, просто відкрийте gen / папку в eclipse (перегляд пакетів). Ви побачите там один пакет, він буде мати ім’я, яке ви вказали у своєму маніфесті. Спробуйте видалити його, він повернеться, якщо всі ваші ресурси дотримуються правильних правил іменування, а всі ваші xml-файли відповідають правильним правилам xml і якщо будуватимуться автоматично ввімкнена в eclipse.
Ключем до розуміння файлу R є усвідомлення того, що він знаходиться в тому ж пакеті, що й інші класи, навіть якщо він знаходиться в іншому каталозі, ніж інші файли, що належать до вашого "основного" пакету. Після того, як ви це зрозумієте і зрозумієте синтаксис та іменування ресурсних файлів, вирішення проблем із R стає простим.