这个问题非常基础。让我举个例子。 我有两个活动
activity_a.xml
ActivityA.java
activity_b.xml
ActivityB.java
两个XML文件都只包含TextView以显示简单文本。像往常一样,TextView将使用其View id
在相应的.java
文件中引用
我的问题是,如果在两个具有相同ID的XML文件中引用TextView是正确的吗? (比如使用下面的代码与activity_a.xml和activity_b.xml具有完全相同的id)
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:id="@+id/textview"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>
我正在练习这个程序没有任何问题。当尝试使用 Ctrl +单击(在Windows上)访问TextView的相应xml代码时,我提供了两个选项(用于显示来自 activity_a的TextView&x xml代码。 xml 或来自 activity_b.xml )。
此外,在Android中命名视图的推荐方法是什么?当您的Android项目包含多个布局文件时,这将很有用。
答案 0 :(得分:1)
是的,如果你在不同的布局中有相同的视图或视图组名称,那么它会告诉它所属的布局文件,请求选择所需的布局文件。
因此,您必须遵循正确的命名约定以避免此类混淆
https://github.com/ribot/android-guidelines/blob/master/project_and_code_guidelines.md
或者你可以给出类似的名字
activity_home_tvUserName
如果来自家庭活动的用户名textview
和
activity_profile_tvUserName
如果来自个人资料活动的用户名textview。
答案 1 :(得分:0)
如果在具有相同ID的XML文件中引用TextView是正确的吗?
完全没问题,编译器只会查看单个视图层次结构下的ID。
例如:findViewById(R.id.textview)
内的ActivityA.java
只会在activity_a.xml
内搜索textview ID(假设您事先有setContentView(R.layout.activity_a);
。
在Android中命名视图的推荐方法是什么?
在我看来,您只需要在整个应用程序中一致地命名您的视图。主要目标是避免误解和混淆。
希望它有所帮助!
答案 2 :(得分:0)
它们处于不同的活动中,因此使用相同的ID应该没有问题。你可以将事件声明为@+id/textview
。但是,为什么不在两个活动中使用相同的XML文件呢?没理由你不能。
您还可以在values文件夹下创建一个ids.xml
文件并在其下声明所有ID,因此您不必在布局中声明它们,但这不是一种非常常见的方法。
答案 3 :(得分:0)
如果在两个具有相同ID的XML文件中引用TextView是正确的吗?
我的回答是是的,是的。
每当我们设置setContentView(R.layout.activity_a)
时,它就会在上述活动中搜索给定的ID。具有相同ID的本地属性将优先于具有相同ID的其他属性。
但拥有独特的身份是最佳实践。