Не удается получить элемент из макета - PullRequest
5 голосов
/ 04 февраля 2011

У меня есть 2 мероприятия. 2-й .xml выглядит так:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
    <ListView 
            android:id="@+id/TrainsListView"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent" 
        />
</LinearLayout>

Часть манифеста:

<activity android:name="TrainsActivity">

</activity>

И я пытаюсь получить TrainsListView:

mListView = (ListView) findViewById(R.id.TrainsListView);

Но после этого mlistView будет нулевым. Почему?

Ответы [ 2 ]

12 голосов
/ 04 февраля 2011

Я предполагаю, что это происходит в методе onCreate() вашей Деятельности, потому что вы вызываете findViewById() до того, как вы вызвали setContentView().Если это не так, пожалуйста, покажите больше вашего кода.

6 голосов
/ 04 февраля 2011

Если findViewById() не удается найти целевой идентификатор, вот несколько причин, по которым это может произойти:

[[В вашем случае, я подозреваю # 1 или # 2.]

  1. SetContentView() (или inflate) еще не был вызван для привязки макета к поиску.

  2. SetContentView() (или inflate) был вызван с макетом, который не содержит целевой идентификатор, например, Вы указали неправильный макет.

  3. В макете или в коде id есть опечатка.

  4. Вы импортировали неправильный файл R (например, файл R компонента библиотеки), и совпадение того же идентификатора также использовалось в другом файле R).

  5. Вы ищете неправильный вид, например вы раздули макет меню и не прикрепили его к корневому макету, а затем попытались найти идентификатор в корневом макете (findBiewById(..)), когда намеревались искать раздутый макет меню (menu.findBiewById(..)).

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