【问题标题】:Understand the R class in Android [duplicate]了解Android中的R类[重复]
【发布时间】:2011-07-23 23:55:04
【问题描述】:

在 android 中,我不确定我是否完全理解 R 类。我正在浏览数独示例,并且我有这个 sn-p 代码:

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 的新手,但从我的收集来看,它看起来像是在接受输入(触摸屏在按钮上被触摸)并评估参数。如果识别到 about 按钮,则设置 case 语句,并创建一个新的界面屏幕,然后导航到手机上。

这样对吗?

如果我得到了正确的要点,为什么要处理“R”类?

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

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

【问题讨论】:

    标签: java android


    【解决方案1】:

    R.java 是动态生成的类,在构建过程中创建,用于动态识别所有资产(从字符串到 android 小部件到布局),用于 Android 应用程序中的 java 类。注意这个R.java 是特定于Android 的(尽管您可以将它复制到其他平台,它非常方便),因此它与Java 语言结构没有太大关系。查看here,了解更多详情。

    【讨论】:

    • 有没有资源可以复制其他项目的R.java构建过程?
    【解决方案2】:

    R 是一个只包含公共常量的类。 (公共静态决赛)。

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

    例如,你应该有类似的东西:

    android:id="@+id/about_button"
    

    在项目的某个布局/菜单 xml 文件中的某个位置,一旦您编写了该文件,Eclipse 将在 R 文件中生成一个常量(您可以在 gen/PACKAGE/R.java 下找到它)

    阅读Resource guide in Android Developers 了解更多信息。

    【讨论】:

    • R类是由aapt生成的吗?
    【解决方案3】:

    R 类是由 Android 工具在编译代码之前从您的资源中生成的。它包含为您可以在项目中引用的每个资源分配的数字常量。例如,您有一个包含 about_button 的 XML 资源文件。如果您没有R 类,则必须使用字符串“about_button”在代码中引用它。如果您在此字符串中犯了错误,则只有在运行应用程序时才能了解它。使用R,您将在编译时更早地看到错误。

    R 的结构使得您可以通过其内部类引用资源。例如,R.id 包含 id 常量,R.layout 包含布局常量。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-06
      • 1970-01-01
      • 1970-01-01
      • 2016-08-27
      相关资源
      最近更新 更多