Таинственная (?) Ошибка в макете XML - PullRequest
0 голосов
/ 23 марта 2012

Я пытаюсь создать очень простой макет списка, следуя приведенным здесь примерам 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?

Ответы [ 2 ]

0 голосов
/ 23 марта 2012

Как и предполагалось, я попробовал это снова, получил ту же фатальную ошибку, а затем «очистил» проект.Похоже, это решило проблему.

0 голосов
/ 23 марта 2012

(Обычно вы должны опубликовать трассировку стека, когда она у вас есть.) Я уже могу догадаться, что это такое, и это довольно просто.Код ссылается на это RatingBar и манипулирует им.Когда вы его удаляете, при поиске кода появляется код null, и возникает ошибка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...