Android:更改视图的顺序导致“不幸的是,应用程序已停止”确定。为什么?

时间:2013-07-01 23:41:06

标签: android layout view emulation

我有一个名为“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 当我将其恢复到之前的订单时,一切运行良好。为什么呢?

2 个答案:

答案 0 :(得分:2)

当您更改XML布局中的视图顺序时,它们的数字ID会更改(它们从上到下分配),然后当您在代码中引用先前的ID时,例如在findViewById()中会得到错误的ClassCastException(我猜是因为你没有包含logcat)。

建筑前的清洁将解决问题。

答案 1 :(得分:0)

如果对没有意义的事情有疑问。项目清理/退出日食并重新开启。

我之前遇到过类似奇怪的事情,这最终解决了它。