Android R文件中的内部类

时间:2011-06-16 12:20:10

标签: java android xml

有没有办法在自动生成的R文件中创建内部类? 现在R文件看起来像这样:

public static final class id {
  public static final int button1=0x7f020000;
  public static final int button2=0x7f020001;
  public static final int text1=0x7f020002;
}

要访问它,您应该输入

R.id.button1

我想要得到这样的东西:

public static final class id {
  public static final class activity1 {
    public static final int button1=0x7f020000;
  }
  public static final int button1=0x7f020001;
}

所以我可以用

访问它
R.id.activity1.button1

可以手动编辑文件,但这不是我正在寻找的方式

更新:我需要这个,因为我当前的项目包含大约20个活动,每个活动有5-30个小部件。我正在跳过很多ID(主要用于按钮和布局),但输入类似

的东西仍然不舒服

AcEventListToolbarUserImageView

(AcEventList - 活动名称,工具栏 - 框架,UserImageView - 用户图片)

更新2:部分解决方案是: 在活动布局xml

<TextView android:id="@+id_ActivityName/WidgetName" />

在java代码中它将是:

R.id_ActivityName.WidgetName

优点:

在输入“R.id_”后查看您的所有活动列表;

通过输入“R.id_ActivityYouNeed”来查看所需活动的所有小工具ID。

3 个答案:

答案 0 :(得分:2)

自动生成R.java文件纯粹是一种机制,允许您从代码中轻松引用res层次结构的内容。因此,您无法创建子层次结构。

简单的解决方案是为项目名称添加上下文。例如,使用@+id/Activity1_button1,您可以将其作为R.id.Activity1_button1

进行访问

答案 1 :(得分:1)

R文件是自动创建的,它不应该被编辑...即使你试图在你运行你的代码时手动执行,也会创建一个新的R文件。你能给出你需要这样做的理由吗?

答案 2 :(得分:0)

我不知道这是否有帮助,但您可以定义自己的Id层次结构,其中包含根据您的实际资源定义的类。您仍然需要输入完全限定名称,但只需输入一次。

像这样:

public static final class MyResources {
    public static final class activity1 {
        public static final int button1=R.id.blahblah_button1;
    }
    public static final int button1=0x7f020001;
}

然后将它们称为:     MyResources.activity1.button1;