Понять класс R в Android
В Android я не уверен, что я понимаю R
учебный класс. Я иду через пример судоку, и у меня есть этот фрагмент кода:
switch (v.getId()) // the id of the argument passed is evaluated by switch statement
{
case R.id.about_button: //
Intent i = new Intent(this, about.class);
startActivity(i);
break;
// More buttons go here (if any) ...
}
Я новичок в Java, но из того, что я понял, похоже, что он принимает данные (сенсорный экран при нажатии кнопки) и оценивает аргумент. Затем устанавливается регистр, если распознается кнопка "о", и создается новый экран интерфейса, а затем осуществляется переход по телефону.
Это правильно?
Если я понял суть этого правильно, почему сделка с классом "R"?
Почему он вызывается для распознавания идентификатора кнопки?
Я думал, что суперкласс (в этом проекте) был классом SudokuActivity.
3 ответа
R.java
это динамически генерируемый класс, созданный в процессе сборки для динамической идентификации всех активов (от строк до виджетов Android и макетов), для использования в классах Java в приложении Android. Обратите внимание на это R.java
специфичен для Android (хотя вы можете дублировать его для других платформ, это очень удобно), поэтому он не имеет ничего общего с языковыми конструкциями Java. Посмотрите здесь, для более подробной информации.
R
это класс, который содержит ТОЛЬКО публичные константы. (публичный статический финал).
Это сгенерированный класс (от Android Plugin в Eclipse), который отражает различные значения, которые вы определили в res
файл.
Например, у вас должно быть что-то вроде:
android:id="@+id/about_button"
где-нибудь в одном из вашего XML-файла макета / меню в проекте, и как только вы это написали, Eclipse сгенерирует константу в файле R (которую вы можете найти в gen/PACKAGE/R.java
)
Прочтите руководство по ресурсам в Android Developer для получения дополнительной информации об этом.
R
класс генерируется инструментами Android из ваших ресурсов перед компиляцией кода. Он содержит назначенную числовую константу для каждого ресурса, на который вы можете ссылаться в своем проекте. Например, у вас есть файл ресурсов XML, который содержит about_button
, Если у вас не было R
класс, вы должны будете использовать строку about_button для ссылки на него в коде. Если вы допустите ошибку в этой строке, вы узнаете об этом только при запуске приложения. С R
вы увидите ошибку намного раньше во время компиляции.
R
структурирован таким образом, что вы можете обращаться к ресурсам через его внутренние классы. Например, R.id
содержит константы id и R.layout
содержит константы макета.