2014-11-19 3 views
1

Я не знаю, почему в моем фрагменте, когда я вызываю getView, он возвращает NULL.

Я знаю, что я могу вызов GetView только после исполнения onCreateView метод
Я отлажена мое приложение, и я проверил, что первый называется методом onCreateView.
Так что я не знаю, где проблема.

Я покажу вам мой код:
это моя основная деятельность, и когда пользователь нажмет в меню ящика я проверить, какой голос меню нажимается:
фрагмент - метод getView() возвращает NULL

public void onNavigationDrawerItemSelected(int position) { 
    ...  
    if (position == 7) { 
       CreaVotoFragment fragment = CreaVotoFragment.newInstance(position + 1); 
       FragmentManager fragmentManager = getFragmentManager(); 
       fragmentManager.beginTransaction() 
         .replace(R.id.container, fragment) 
         .commit(); 
       //Mostra un Dialog che consente l'eliminazione di un corso 
       fragment.createMark(this); 
    } 
    ... 
} 

В этом случае пользователь нажал номер голосового меню 7, поэтому внутри этого блока я создаю новый фрагмент со статическим методом newIstance.

это метод:

public static CreaVotoFragment newInstance(int sectionNumber) { 
    CreaVotoFragment fragment = new CreaVotoFragment(); 
    Bundle args = new Bundle(); 
    args.putInt(ARG_SECTION_NUMBER, sectionNumber); 
    fragment.setArguments(args); 
    return fragment; 
} 

после этого я просто дать фрагмент к методу: заменить.

Это работает, и я также вижу, что он вызывает метод WithCreateView, переопределенный в классе CreaVotoFragment.

Проблема начинается, когда я вызываю метод createMark (последняя строка блока if).
внутри метода createMark, когда я вызываю getView, возвращаю мне нулевой указатель.

ответ

2

Вы должны заметить, что commit() будет работать на Handler.post(). Это означает, что представление вашего фрагмента будет создано ПОСЛЕ onNavigationDrawerItemSelected.

Лучше, если вы вызываете связанные с просмотром методы из внутреннего фрагмента, чтобы ограничить жизненный цикл представления.

+0

, так что я мог бы вызвать метод createMark() внутри метода фрагмента onCreateView? –

+0

Да. Но обратите внимание, что getView() вернет представление только после onCreateView(). Если вы хотите вызвать getView() в некоторых методах, просто сделайте это между onCreateView() и onDestroyView() – slesar

Смежные вопросы