我们没有汇编问题,我们只想扩展我们的知识。通过Google Code文档阅读,我们已经阅读了 ID不一定是唯一的布局。
在编译示例下方:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:orientation="vertical"
tools:context="com.bq.testviewids.MainActivity">
<TextView
android:id="@+id/text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello World!" />
<TextView
android:id="@+id/text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hola Mundo" />
</LinearLayout>
private void initViews() {
txtText = (TextView) findViewById(R.id.text);
txtText.setId(View.generateViewId());
txtText = (TextView) findViewById(R.id.text);
}
private void changeTextView() {
txtText.setText("");
}
如果在 initviews()中我们没有最后两行:
txtText.setId(View.generateViewId());
txtText = (TextView) findViewById(R.id.text);
当我们更改txtText(在 changeTextView())中时,第一个文本视图将被修改。
如果我们确实有最后两行,则第二个文本视图将被修改。
我们不知道这是可能的,我们认为,如果您有两个具有相同 ID的整个布局,则不会编译。现在,我们知道标识符在此视图的层次结构中不必是唯一的,但是,我们不了解此行为的有用性。
有人知道非唯一标识符有用的用例吗?
当我们在设置项目中,当我们在中看到MSM 的Android( caf )时,这种疑问就会出现在我们身上。em>@ id/fields ):
<LinearLayout android:id="@+id/fields"
android:layout_width="match_parent"
android:layout_height="wrap_content"
style="@style/wifi_section"
android:visibility="gone">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
style="@style/wifi_item">
...
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
style="@style/wifi_item">
...
</LinearLayout>
<LinearLayout android:id="@+id/fields"
android:layout_width="match_parent"
android:layout_height="wrap_content"
style="@style/wifi_section" >
...
</LinearLayout>
如果您在另一个布局中包含两次或更多次的布局,则想到的用例是重复的ID。它可以为您节省尝试在每个重复的布局中获得唯一ID的头痛。
它还允许您使用相同的代码在每个包含的布局中工作,而无需跟踪不同的ID的副标题,具体取决于您正在使用的子路线。