Android XML布局中的神秘(?)错误

Android XML布局中的神秘(?)错误,android,xml,android-layout,Android,Xml,Android Layout,我正在尝试创建一个非常简单的列表布局,下面是这里的公共软件示例:。以下是我的相关档案: RateListDemo.java package my.ratelist; import android.app.ListActivity; import android.os.Bundle; import android.widget.ArrayAdapter; public class RateListDemo extends ListActivity { private static final

我正在尝试创建一个非常简单的列表布局,下面是这里的公共软件示例:。以下是我的相关档案:

RateListDemo.java

package my.ratelist;

import android.app.ListActivity;
import android.os.Bundle;
import android.widget.ArrayAdapter;

public class RateListDemo extends ListActivity {

private static final String[] items={"lorem", "ipsum", "dolor", "sit", "amet", "consectetuer", "adipiscing",
    "elit", "morbi", "vel", "ligula", "vitae", "arcu", "aliquet", "mollis", "etiam", "vel", "erat", "placerat",
    "ante", "porttitor", "sodales", "pellentesque", "augue", "purus"};

@Override
public void onCreate(Bundle icicle) {
    super.onCreate(icicle);
    setListAdapter(new ArrayAdapter<String>(this, R.layout.row, R.id.label, items));
    setContentView(R.layout.list);
}
}
打包my.ratelist;
导入android.app.ListActivity;
导入android.os.Bundle;
导入android.widget.ArrayAdapter;
公共类RateListDemo扩展了ListActivity{
私有静态最终字符串[]项={“lorem”、“ipsum”、“dolor”、“sit”、“amet”、“Concertetuer”、“Adipising”,
“elit”、“morbi”、“vel”、“ligula”、“vitae”、“arcu”、“aliquet”、“mollis”、“etiam”、“vel”、“erat”、“Placelat”,
“ante”、“porttitor”、“sodales”、“Pelletsque”、“augue”、“purus”};
@凌驾
创建公共空间(捆绑冰柱){
超级冰柱;
setListAdapter(新的ArrayAdapter(this,R.layout.row,R.id.label,items));
setContentView(R.layout.list);
}
}
list.xml

<?xml version="1.0" encoding="utf-8"?>

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent">

<ListView android:id="@android:id/list"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" />

</RelativeLayout>

row.xml

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >

<RatingBar
    android:id="@+id/rate"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:numStars="3" />

<TextView
    android:id="@+id/label"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content" />

</LinearLayout>

所以这里有一件很奇怪的事。这段代码运行良好。但是,如果我从row.xml中删除RatingBar项并只保留TextView项,那么它在运行时会抛出致命错误。这对我来说毫无意义,尤其是因为我有另一个应用程序,它运行的布局方案非常相似,没有任何问题。如您所见,代码中其他地方没有对RatingBar项的引用。此外,如果我在row.xml中切换RatingBar和TextView项的顺序,它会抛出相同的错误。怎么回事

初始错误消息是位于android.widget.ArrayAdapter.createViewFromResource的NullPointerException。如果有帮助,我可以提供整个日志

编辑:


嗯,在尝试在这些不同的布局配置中运行它并反复出现致命错误之后,它们现在都可以工作了。但除了试着运行几次外,我没有做任何改变。我觉得在使用XML之前,这种情况在我身上发生过。因此,问题仍然存在:WTF?

(通常,当你有堆栈跟踪时,你应该发布它。)我已经可以猜出它是什么,而且它非常简单。代码引用此
分级栏
并对其进行操作。当您删除它时,代码在查找时会出现
null
,并且出现错误。

正如建议的那样,我再次尝试了此操作,得到了相同的致命错误,然后“清理”了项目。这似乎解决了这个问题。

好吧,这将是显而易见的答案,也是我研究的第一件事。除了上面的三个文件外,还有strings.xml和manifest。它们没有对分级栏的引用。正如我所说,这是一个非常简单的布局。为了找出这个错误,我把它删掉了。在这一点上,分级杆只是为了骑行。此外,正如我所说,保留分级栏但只是切换布局中项目的顺序也会导致致命错误。您是否在移动或删除分级栏的顺序后清理了项目?我认为,当您尝试运行一个项目时,在XML中的更改之后,R类id并不总是重新生成的,因此它可能仍然有一个对更改对象的旧引用..这解释了为什么在多次尝试之后,它开始工作。是的,看起来确实存在某种工件问题。我以前从未清理过项目,但下次我会试试。