了解Android中的R类

82

在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完全不了解,但据我所知,它似乎正在获取输入(触摸屏幕上的按钮)并评估参数。然后,如果识别出关于按钮,则设置 switch 语句,并创建一个新的界面屏幕,然后在手机上导航到该屏幕。

这是正确的吗?

如果我理解得没有错,那么“R”类是什么意思?

为什么要调用它来识别按钮的ID?

我以为超类(在这个项目中)是SudokuActivity类。

3个回答

112

R.java 是在构建过程中动态生成的类,用于动态识别 Android 应用程序中所有资产(从字符串到 Android 控件到布局),以供 Java 类使用。注意,这个 R.java 是 Android 特定的(虽然你可能能够为其他平台复制它,但它非常方便),因此它与 Java 语言结构并没有太多关系。点击这里获取更多详细信息。


有没有关于如何复制其他项目的R.java构建过程的资源? - Nolan Akash

46

R是一个只包含公共常量(public static final)的类。

它是一个由Android插件在Eclipse中生成的类,反映了您在res文件中定义的各种值。

例如,您应该有类似以下的内容:

android:id="@+id/about_button"

在项目的一个布局/菜单xml文件中的某个地方,一旦你写了那个代码,Eclipse就会在R文件中生成一个常量(可以在gen/PACKAGE/R.java下找到)。
阅读Android开发者资源指南以获取更多关于此的信息。

1
R类是由aapt生成的吗? - user8389458

25
R类是由Android工具在编译代码之前从资源中生成的。它为每个资源分配了一个数字常量,您可以在项目中引用这些常量。例如,您有一个包含about_button的XML资源文件。如果没有R类,您将不得不在代码中使用字符串"about_button"来引用它。如果在此字符串中犯了错误,您只能在运行应用程序时才会发现。而有了R类,您将在编译时更早地看到错误。 R的结构使您可以通过其内部类引用资源。例如,R.id包含id常量,R.layout包含布局常量。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接