Android:更改视图顺序会导致“不幸的是,应用程序已停止”OK。为啥?
Posted
技术标签:
【中文标题】Android:更改视图顺序会导致“不幸的是,应用程序已停止”OK。为啥?【英文标题】:Android: changing the order of views causes "Unfortunately, app has stopped" OK. Why?Android:更改视图顺序会导致“不幸的是,应用程序已停止”OK。为什么? 【发布时间】:2013-07-01 23:41:05 【问题描述】:我有一个名为“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_
android:layout_
android:orientation="vertical" >
<TextView
android:layout_
android:layout_
android:gravity="center"
android:text="@string/titleStatus"
android:textSize="30sp" />
<EditText
android:id="@+id/editText"
android:layout_
android:layout_
android:layout_weight="1"
android:gravity="top|center_horizontal"
android:hint="@string/hintText" />
<TextView
android:id="@+id/textCounter"
android:layout_
android:layout_
android:layout_gravity="right"
android:layout_marginRight="10dp"
android:text="000" />
<Button
android:id="@+id/buttonId"
android:layout_
android:layout_
android:text="@string/buttonUpdate"
android:textSize="20sp" />
</LinearLayout>
该应用程序很好地显示了一切。
我所做的唯一更改是将 (EditText
id/editText") 的顺序更改为 (TextView
id/textCounter),使其变为:
<?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_
android:layout_
android:orientation="vertical" >
<TextView
android:layout_
android:layout_
android:gravity="center"
android:text="@string/titleStatus"
android:textSize="30sp" />
<TextView
android:id="@+id/textCounter"
android:layout_
android:layout_
android:layout_gravity="right"
android:layout_marginRight="10dp"
android:text="000" />
<EditText
android:id="@+id/editText"
android:layout_
android:layout_
android:layout_weight="1"
android:gravity="top|center_horizontal"
android:hint="@string/hintText" />
<Button
android:id="@+id/buttonId"
android:layout_
android:layout_
android:text="@string/buttonUpdate"
android:textSize="20sp" />
</LinearLayout>
在此更改后,模拟器显示:Unfortunately, Yamba has stopped" OK
。
当我将其恢复到以前的顺序时,一切正常。为什么?
【问题讨论】:
【参考方案1】:当您在 XML 布局中更改视图的顺序时,它们的数字 ID 会更改(它们是从上到下分配的),然后当您在代码中引用之前的 ID(例如 findViewById()
)时,您将弄错了一个ClassCastException
(我猜是因为你没有包含logcat)。
在建造之前进行清洁将解决问题。
【讨论】:
这实际上很有意义。远远超过我的日食理论。 +1。【参考方案2】:当对没有意义的事情有疑问时。项目清理/退出 eclipse 并重新打开。
我以前遇到过这样的奇怪事情,最终解决了这个问题。
【讨论】:
以上是关于Android:更改视图顺序会导致“不幸的是,应用程序已停止”OK。为啥?的主要内容,如果未能解决你的问题,请参考以下文章
Android - 更改表列现在会导致程序崩溃。 java.lang.NumberFormatException:无效的int:“T”