NPE на присвоении адаптера листу, при скрещивании двух проек

Ответить
AlexVinn
Сообщения: 81
Зарегистрирован: 04 апр 2014, 04:56

NPE на присвоении адаптера листу, при скрещивании двух проек

Сообщение AlexVinn » 23 май 2014, 03:56

Скрещивал два проекта (ActionBar Tabs и CustomizeListView). Вообщем Табы и на них лист.
Все было хорошо, но при запуске выдает NPE при присвоении адаптера, когда формируется список на Табе.
Пол-ночи сижу и никак. Вроде всё правильно. Нужна Ваша помощь.

Ошибка
0java.lang.NullPointerException at com.example.listwithpic.Tab1.onCreateView(Tab1.java:72) at android.support.v4.app.Fragment.performCreateView(Fragment.j ava:1500)
Код (на последней строке ошибка)

[syntax=java5]list = (ListView) getActivity().findViewById(R.id.list);
// Getting adapter by passing xml data ArrayList
adapter = new LazyAdapter(getActivity(), songsList);
list.setAdapter(adapter);[/syntax]
Изначально этот адаптер был на MainActivity, а сейчас отдельным классом для каждого таба.
Сначала подчеркивало красным на поиске листа (первая строка и на создании (вторая)). Я поставил там getActivity(). Перестало подчеркивать и ошибок больше нет. Но при запуске NPE. Может я тут что-то не так сделал ?

Пожалуйста, помогите решить проблему. Заранее спасибо. Может если мало инфы, говорите что нужно....
Тут должна быть подпись.

Аватара пользователя
klblk
Сообщения: 1097
Зарегистрирован: 18 окт 2012, 11:17
Откуда: г. Красноярск

Re: NPE на присвоении адаптера листу, при скрещивании двух п

Сообщение klblk » 23 май 2014, 06:31

Не там ищете свой ListView. Судя по всему действия происходят в onCreateView фрагмента, значит нужно искать в том View которая эта функция возвращает.
что-то вроде:
[syntax=java] public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_main, container,
false);
list = (ListView) rootView.findViewById(R.id.list);
adapter = new LazyAdapter(getActivity(), songsList);
list.setAdapter(adapter);
return rootView;
}[/syntax]

где fragment_main.xml: layout содержащий ListView;

Ответить