У меня есть TabsPagerAdapter класс, который распространяется FragmentPagerAdapter. Я использую его для заполнения 3 вкладок. Все три представления - это фрагменты.Фрагмент onCreateView не называется
Это, как они определены
public class DonorSearchFragment extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
...
}
}
public class DonorResultsFragment extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
...
}
}
public class CampDonorResultsFragment extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
...
}
}
Этих фрагментов (как вкладки) инстанцируется из TabsPagerAdapter класса, как показано ниже
public class TabsPagerAdapter extends FragmentPagerAdapter {
private ArrayList<Fragment> fragments;
public TabsPagerAdapter(FragmentManager fm) {
super(fm);
fragments = new ArrayList<Fragment>();
fragments.add(Constants.SEARCH_TAB_POSITION, new DonorSearchFragment());
fragments.add(Constants.DONORS_TAB_POSITION, new DonorResultsFragment());
fragments.add(Constants.CAMP_DONORS_TAB_POSITION, new CampDonorResultsFragment());
}
...
}
и MainActivity, я инстанцировать TabsPagerAdapter класса который был указан выше
public class MainActivity extends ActionBarActivity implements ActionBar.TabListener, DonorSearchFragment.ResultsChangedListener {
@Override
protected void onCreate(Bundle savedInstanceState) {
...
tabsPagerAdapter = new TabsPagerAdapter(getSupportFragmentManager());
viewPager.setAdapter(tabsPagerAdapter);
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
for (String tab_name : tabs) {
actionBar.addTab(actionBar.newTab().setText(tab_name).setTabListener(this));
}
..
}
}
Удивительно, что третья вкладка (т.е. CampDonorResultsFragment) onCreateView() не вызывается даже после создания экземпляра, как указано выше. В результате, если я вызываю какой-либо метод на этом фрагменте, все переменные (создаваемые в onCreateView()) равны null, и я получаю исключение Null Pointer.
Что именно происходит здесь, почему onCreateView() не вызывается перед вызовом какого-либо метода на этот фрагмент. Кроме того, почему это не происходит на второй вкладке (DonorResultsFragment) выше.
пост 'TabsPagerAdapter' полностью !! – mmlooloo