Понять класс 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 содержит константы компоновки.