gpt4 book ai didi

java - 我可以在 android 中有 2 个具有相同 ID 的不同 View 吗

转载 作者:行者123 更新时间:2023-11-29 23:46:23 24 4
gpt4 key购买 nike

TextView 和 ImageView 具有相同的 Id 是否正确?因为它们属于同一个实体,所以我给了它们相同的 ID。如果是.. 那么我如何通过 id 分别找到这些 View ?

最佳答案

Is it right to have same Id for a TextView and a ImageView ?

简短回答:

长答案:使用相同的 ID 是正确的,因为这样做会导致运行时错误。考虑下面的例子

布局.xml

        <TextView
android:id="@+id/location"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="0dp"
android:layout_marginTop="12dp" />

<ImageView
android:id="@+id/location"
android:layout_width="70dp"
android:layout_height="70dp"
android:layout_marginStart="33dp"
android:layout_marginTop="5dp"
app:srcCompat="@drawable/openLoc" />

位置 Activity .java

setContentView(R.layout.activity_profile); //inflated layout
txtLocation = (TextView) findViewById(R.id.location);

在这里你会遇到 Activites 中的问题,因为它会混淆应该从两个元素中挑选哪个元素。

顺便说一句 YES 你可以在不同的布局中使用相同的 ID,因为它不会产生任何运行时错误,因为它只会在膨胀的布局上搜索 ID。

编辑:您可以在同一布局中使用相同的 ID。当您通过 findViewById() 调用它并抛出类似的异常时,它会导致问题

java.lang.ClassCastException
android.support.v7.widget.AppCompatImageView cannot be cast to android.widget.TextView

建议: 我不知道为什么要为两个元素分配相同的 ID,但如果您想要可读性,那么我建议您以一种可以通过以下方式轻松识别元素的方式设置 ID ID like android:id="@+id/txtLocation" android:id="@+id/imgLocation" 只需读取ID就可以轻松识别元素类型.您可以通过在开头附加布局名称来使其更容易,例如 android:id="@+id/profileTxtLocation"。现在这将在编码时帮助您,因为自动完成功能将帮助您。只需键入布局名称,您将获得所有布局元素的列表,然后您将键入元素的种类,您将获得布局中所有要求的元素(例如:textViews)的列表。

关于java - 我可以在 android 中有 2 个具有相同 ID 的不同 View 吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51342299/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com