1

我有一个名为“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>

该应用程序很好地显示了一切。

我所做的唯一更改是使用 (id/textCounter) 更改 ( EditTextid/editText")的顺序TextView,使其变为:

<?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.
当我将其恢复到以前的顺序时,一切正常。为什么?

4

2 回答 2

2

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

施工前的清洁将解决问题。

于 2013-07-01T23:50:29.290 回答
0

当对没有意义的事情有疑问时。项目清理/退出 Eclipse 并重新打开。

我以前遇到过这样的奇怪事情,最终解决了它。

于 2013-07-01T23:44:31.903 回答