Что такое R:
В R. нет ничего очень загадочного. Это просто класс, который имеет много статических подклассов, откройте его в eclipse и посмотрите (его под gen /).
Каждый член этого класса представляет собой одно из двух: 1) статические конечные классы или 2) статические конечные целые числа, которые уникальны по отношению к другим членам их класса.
Почему это так загадочно:
легко запутаться, потому что R автоматически генерируется ant. Это загадочно, потому что вы не должны «трогать» его вручную (конечно, вы можете, но ваши изменения будут автоматически удалены при регенерации). Это дополнительно загадочно, потому что иногда eclipse автоматически импортирует стандартный 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 станет простым.