为Android视图创建ID

时间:2016-05-10 02:19:27

标签: android

这个问题非常基础。让我举个例子。 我有两个活动

  
      
  • 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项目包含多个布局文件时,这将很有用。

4 个答案:

答案 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的其他属性。

但拥有独特的身份是最佳实践。