FindViewByID возвращает значение NULL для CustomView - PullRequest
4 голосов
/ 17 июня 2011

У меня снова проблема с findViewById в Android.Моя активность никогда не выходит из цикла while, потому что просмотр списка всегда нулевой.Я уже пытался восстановить.Я знаю о методе onFinishedInflating для представлений, но он не помогает мне в моей деятельности.

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    this.setContentView(R.layout.list_with_compass);

    ListWithCompassView lv = (ListWithCompassView) this.findViewById(R.id.compass_list);

    while(lv == null) {
        Log.d("waiting", "waiting1");
        lv = (ListWithCompassView) this.findViewById(R.id.compass_list);
    }
    this.setListView();
}

Это XML:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout android:id="@+id/linear_layout_compass" android:layout_width="fill_parent" android:layout_height="fill_parent" xmlns:android="http://schemas.android.com/apk/res/android">
    <karsunke.view.ListWithCompassView 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:id="@+id/compass_list">
    </karsunke.view.ListWithCompassView>
</LinearLayout>

Ответы [ 2 ]

9 голосов
/ 17 июня 2011

Добавьте этот конструктор в свой пользовательский класс представления.

public ListWithCompassView(Context context, AttributeSet attrs) {
        super(context, attrs);
    }
0 голосов
/ 17 июня 2011

Это длинный выстрел, но попробуйте очистить ваш проект и восстановить его.Иногда я получал null в findviewbyid без причины, пока я не перестроил свой проект.Если это не поможет опубликовать пользовательский класс, чтобы мы могли видеть, есть ли проблема.

...