Понять класс 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.
3 ответа:
R.java
это динамически генерируемый класс, созданный в процессе сборки для динамической идентификации всех активов (от строк до виджетов android до макетов), для использования в классах java в Android-приложении. Обратите внимание на этоR.java
специфичен для Android (хотя вы можете дублировать его для других платформ, это очень удобно), поэтому он не имеет большого отношения к конструкциям языка Java. Взгляните здесь, для более подробной информации.
R
- это класс, который содержит только общедоступные константы. (публичный статический финал).это сгенерированный класс (с помощью плагина Android в Eclipse), который отражает различные значения, определенные в .
например, вы должны иметь что-то вроде:
android:id="@+id/about_button"
где-то в одном из ваших XML-файлов макета/меню в проекте, и как только вы написали это, Eclipse создаст константу в файле R (который вы можете найти в разделе
gen/PACKAGE/R.java
)читать руководство по ресурсам в Android разработчиков для получения дополнительной информации об этом.
R
класс генерируется Android tools из ваших ресурсов перед компиляцией кода. Он содержит назначенную числовую константу для каждого ресурса, на который можно ссылаться в проекте. Например, у вас есть XML-файл ресурсов, содержащийabout_button
. Если бы у вас не былоR
класс, вы должны были бы использовать строку "about_button", чтобы ссылаться на него в коде. Если вы допустили ошибку в этой строке, вы узнаете об этом только при запуске приложения. СR
вы увидите ошибку гораздо раньше во время компиляции.
R
структурирован таким образом, что вы можете ссылаться на ресурсы через его внутренние классы. Например,R.id
содержит константы id иR.layout
содержит константы макета.