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