有没有办法在自动生成的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。
答案 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;