В AndroidStudio, когда я создаю проект с использованием пустого действия, я получаю в MainActivity.java
файле следующий фрагмент кода :
package my.company.my_proj;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
}
где используется загадочный класс с именем R
. Какова цель этого занятия R
?
Что такое 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 станет простым.
источник
R - это имя ваших ресурсов. Любой ресурс, к которому вы обращаетесь,
R.$FOLDER.$RESOURCE
или нечто очень похожееЕсли не удается разрешить проблему, убедитесь, что путь указан правильно и ресурс, на который есть ссылка, существует (с учетом регистра; укажите расширение).
Кроме того, сбивает с толку (во всяком случае, для меня) то, что есть два разных
R
. Если вы получаете много ошибок типа «Не удается устранить», попробуйте посмотреть, что вы импортируете. Попробуйте изменить или удалить его. Или вы можете попробовать очистить свой проект (ПРЕДУПРЕЖДЕНИЕ: иногда это только усугубляет ситуацию).источник
R
файл. Время от времени он пропускает этап «регенерации», оставляя меня без (или с пустым),R
иR
запрограммирован на автоматическую отмену любых изменений, сделанных вручную.Android R.java - это автоматически сгенерированный файл AAPT (Android Asset Packaging Tool), который содержит идентификаторы ресурсов для всех ресурсов каталога res /. Если вы создаете какой-либо компонент в файле activity_main.xml, в этом файле автоматически создается идентификатор соответствующего компонента. Этот идентификатор можно использовать в исходном файле активности для выполнения любых действий с компонентом.
источник