在我当前的项目中,我有三个不同的EditText
小部件,采用三种不同的Activity
布局,用于输入年份。我从创建 UI 开始,最初有
<EditText android:id="@+id/year_text" ... other attributes ... />
在我的每个 XML 布局文件中。由于这个名称冲突,我从来没有遇到过任何编译器错误,我只是意识到这可能是一个问题,因为我开始为每个Activity
. 所以我的第一个问题是,这种名称冲突是否会导致未来出现问题?
据我了解,+
告诉布局解析器为R.java
文件中的命名 ID 创建一个新值。我还可以使用@id/name
语法引用以前给定的 ID。如果我+
从除一个之外的所有EditText
s 中删除 会发生什么?这解决了为R
类中的标识符分配新值的问题。但是在不同的布局中重复使用相同的 ID 会导致任何问题吗?(回想一下,名称冲突发生在不同的 XML 布局文件中,而不是在同一个布局中。)
现在,我已经为我的所有小部件 ID 创建了长名称。例如:
<EditText android:id="@+id/details_year_text" ... other attributes ... />
<EditText android:id="@+id/year_filter_year_text" ... other attributes ... />
<EditText android:id="@+id/year_and_number_filter_year_text" ... other attributes ... />
前缀跟在每个文件所在的 XML 布局文件的名称之后EditText
。这有点麻烦,尤其是在使用 NetBeans 中的自动完成功能时。(是的,我使用的是 NetBeans 而不是 Eclipse。=p)。如果我确实需要为每个EditText
小部件使用唯一的名称,那么将它们分成命名空间会很方便。XML 布局是否支持任何可以创建内部类的语法,这些内部类R.id
可以用作我的 ID 的命名空间?
最后,我知道这是一个非常小的项目。我可以想象有些 Android 应用程序的小部件比我使用的要多得多。如果有的话,在项目的 XML 布局中命名和组织 ID 的标准做法是什么?