Android

Understand the R class in Android [duplicate]

Понимание класса 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, но из того, что я понял, похоже, что он принимает входные данные (нажатие кнопки на сенсорном экране) и оценивает аргумент. Затем устанавливается оператор case, если распознана кнопка about, и создается новый экран интерфейса, к которому затем осуществляется навигация на телефоне.

Это правильно?

Если я правильно понял суть этого, почему дело в классе "R"?

Почему он вызывается для распознавания идентификатора кнопки?

Я думал, что суперклассом (в этом проекте) был класс SudokuActivity .

Переведено автоматически
Ответ 1

R.java это динамически генерируемый класс, созданный в процессе сборки для динамической идентификации всех ресурсов (от строк до виджетов Android и макетов) для использования в классах java в приложении Android. Обратите внимание, что это R.java специфично для Android (хотя вы можете дублировать его для других платформ, это очень удобно), поэтому оно не имеет большого отношения к конструкциям языка Java. Взгляните сюда, для получения более подробной информации.

Ответ 2

R это класс, который содержит ТОЛЬКО общедоступные константы. (public static final).

Это сгенерированный класс (плагином Android в 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 содержит константы layout .

java android