我有一个名为“Yamba”的应用程序。它唯一的布局XML文件是:
<?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:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:text="@string/titleStatus"
android:textSize="30sp" />
<EditText
android:id="@+id/editText"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:gravity="top|center_horizontal"
android:hint="@string/hintText" />
<TextView
android:id="@+id/textCounter"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="right"
android:layout_marginRight="10dp"
android:text="000" />
<Button
android:id="@+id/buttonId"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/buttonUpdate"
android:textSize="20sp" />
</LinearLayout>
应用程序显示一切正常。
我所做的唯一更改是使用(EditText
id / textCounter)更改(TextView
id / editText“)的顺序,以便它变为:
<?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:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:text="@string/titleStatus"
android:textSize="30sp" />
<TextView
android:id="@+id/textCounter"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="right"
android:layout_marginRight="10dp"
android:text="000" />
<EditText
android:id="@+id/editText"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:gravity="top|center_horizontal"
android:hint="@string/hintText" />
<Button
android:id="@+id/buttonId"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/buttonUpdate"
android:textSize="20sp" />
</LinearLayout>
完成此更改后,模拟器会显示:Unfortunately, Yamba has stopped" OK
当我将其恢复到之前的订单时,一切运行良好。为什么呢?
答案 0 :(得分:2)
当您更改XML布局中的视图顺序时,它们的数字ID会更改(它们从上到下分配),然后当您在代码中引用先前的ID时,例如在findViewById()
中会得到错误的ClassCastException
(我猜是因为你没有包含logcat)。
建筑前的清洁将解决问题。
答案 1 :(得分:0)
如果对没有意义的事情有疑问。项目清理/退出日食并重新开启。
我之前遇到过类似奇怪的事情,这最终解决了它。