Android布局中的小组件ID名称冲突

时间:2012-10-07 18:23:54

标签: android layout android-widget android-resources

在我当前的项目中,我有三个不同的EditText小部件,分为三个不同的Activity布局,用于输入一年。我从创建UI开始,最初有

<EditText android:id="@+id/year_text" ... other attributes ... />

在我的每个XML布局文件中。由于此名称冲突,我从未遇到任何编译器错误,只是意识到它可能是一个问题,因为我开始为每个Activity实现UI背后的行为。所以我的第一个问题是,这种名称冲突是否会引发问题?

根据我的理解,+告诉布局解析器为R.java文件中的命名ID创建新值。我还可以使用@id/name语法引用先前给定的ID。如果我从所有+中删除EditText但会删除R会怎样?这解决了在<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 ... /> 类中为标识符分配新值的问题。但是在不同的布局中重用相同的ID会导致任何问题吗? (回想一下,名称冲突跨越不同的XML布局文件,而不是在相同的布局中。)

现在,我已经为我的所有小部件ID创建了长名称。例如:

EditText

前缀遵循每个EditText所在的XML布局文件的名称。这有点麻烦,尤其是在NetBeans中使用自动完成功能时。 (是的,我使用的是NetBeans而不是Eclipse。= p)。如果我确实需要为我的每个R.id小部件使用唯一的名称,那么将它们分成名称空间会很方便。 XML布局是否支持任何将创建{{1}}内部类的语法,这些内部类可以作为我的ID的命名空间?

最后,我知道这是一个非常小的项目。我可以想象Android应用程序的小部件比我使用的要多得多。在项目的XML布局中命名和组织ID的标准做法是什么(

1 个答案:

答案 0 :(得分:1)

对于你的第一个问题,android为你的资源xml文件提供了id标记,这意味着你可以先声明你的id(类似于字符串),这里有可能对你有帮助的信息:http://developer.android.com/guide/topics/resources/more-resources.html#Id