2014-09-10 5 views
0

У меня есть фрагмент, где я получаю доступ к m_items -layout:Не удается получить доступ к элементу активности в методе onItemClick

public class MoviesListFragment extends Fragment { 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
     View view = inflater.inflate(R.layout.m_items, container, false); 

Я создал пользовательский адаптер (расширяющий класс BaseAdapter), который использует другой Схема, как каждый элемент списка, принадлежащего к m_items -layout:

listView = (ListView) view.findViewById(R.id.listView); 
MovieAdapter adapter = new MovieAdapter(getActivity(), initData()); 
listView.setAdapter(adapter); 

в компоновке, в которой используется адаптер, есть TextView с идентификатором @+id/textID. Я пытаюсь установить текст к нему в onItemClick -метода:

listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
    @Override 
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
     TextView movie_id = (TextView) view.findViewById(R.id.textID); 
     movie_id.setText("577"); 
    } 
}); 

но получить исключение java.lang.NullPointerException здесь: movie_id.setText("577");

Как я понимаю, view.findViewById(R.id.textID); возвращается нуль.

Почему это происходит?

Спасибо.

+0

Каково содержимое файла макета, где указан текстID? – AGreenman

+1

Ваш адаптер 'getView()' возвращает представления с 'textID' в них? – laalto

+0

@laalto, спасибо большое! Теперь это работает. –

ответ

1

View аргумент onItemClick() соответствует View, который вы вернули с вашего адаптера getView().

Чтобы найти дочерний вид из него, убедитесь, что вид, который вы возвращаете с getView(), фактически содержит представление с данным идентификатором (textID).