在我当前的项目中,我有三个不同的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的标准做法是什么(
)答案 0 :(得分:1)
对于你的第一个问题,android为你的资源xml文件提供了id标记,这意味着你可以先声明你的id(类似于字符串),这里有可能对你有帮助的信息:http://developer.android.com/guide/topics/resources/more-resources.html#Id