Я пытаюсь создать очень простой макет списка, следуя приведенным здесь примерам CommonsWare: http://www.commonsware.com/Android/excerpt.pdf. Вот мои соответствующие файлы:
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);
}
}
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>
Итак, вот действительно странная вещь. Этот код работает нормально. Однако, если я удаляю элемент RatingBar из row.xml и оставляю только элемент TextView, то при запуске он выдает фатальные ошибки. Это не имеет смысла для меня, тем более, что у меня есть другое приложение, которое запускает очень похожую схему компоновки без проблем. Как видите, в другом месте кода нет ссылки на элемент RatingBar. Кроме того, если я переключаю порядок элементов RatingBar и TextView в row.xml, он выдает ту же ошибку. Что за сделка?
Первоначальное сообщение об ошибке: NullPointerException в android.widget.ArrayAdapter.createViewFromResource. Я могу предоставить весь журнал, если это поможет.
EDIT:
Хм, хорошо после попытки запустить его в этих различных конфигурациях и неоднократно получать фатальные ошибки, все они теперь работают. Но я ничего не изменил, кроме как попытаться запустить его несколько раз. Я чувствую, что это случилось со мной раньше с XML. Итак, остается вопрос: WTF?