Понять класс R в Android
В андроиде я не уверен, что вполне понимаю класс R
. Я просматриваю пример sudoku, и у меня есть этот фрагмент кода:
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, но из того, что я собираю, похоже, что он принимает входные данные (сенсорный экран касается кнопки) и оценивает аргумент. Затем оператор case устанавливается, если кнопка about известна, и создается новый экран интерфейса, а затем переводится на телефон.
Правильно ли это?
Если бы я понял суть этого вопроса, почему сделка с классом "R"?
Почему он призван распознавать идентификатор кнопки?
Я думал, что суперкласс (в этом проекте) был классом SudokuActivity.
Ответы
Ответ 1
R.java
- динамически сгенерированный класс, созданный во время процесса сборки, для динамического определения всех активов (от строк до виджетов android до макетов) для использования в Java-классах в приложении Android. Обратите внимание, что этот R.java
имеет специфику Android (хотя вы можете дублировать его для других платформ, что очень удобно), поэтому он не имеет большого отношения к конструкциям языка Java. Посмотрите здесь, для более подробной информации.
Ответ 2
R
- это класс, содержащий ТОЛЬКО общедоступные константы. (публичный статический финал).
Это сгенерированный класс (от Android Plugin в Eclipse), который отражает различные значения, определенные вами в файле res
.
Например, у вас должно быть что-то вроде:
android:id="@+id/about_button"
где-нибудь в одном из файлов вашего макета/меню xml в проекте, и как только вы написали это, Eclipse будет генерировать константу в R файле (который вы можете найти в gen/PACKAGE/R.java
)
Подробнее об этом читайте справочник по ресурсам в Android Developers.
Ответ 3
R
класс генерируется инструментами Android из ваших ресурсов перед компиляцией вашего кода. Он содержит назначенную числовую константу для каждого ресурса, который вы можете ссылаться в своем проекте. Например, у вас есть файл ресурсов XML, содержащий about_button
. Если у вас не было класса R
, вам нужно будет использовать строку "about_button", чтобы ссылаться на нее в коде. Если вы допустили ошибку в этой строке, вы узнаете об этом только при запуске приложения. С R
вы увидите ошибку намного раньше во время компиляции.
R
структурирован таким образом, что вы можете ссылаться на ресурсы через свои внутренние классы. Например, R.id
содержит константы id и R.layout
содержит константы компоновки.