TabsPagerAdapterFragmentPagerAdapter까지 확장되는 클래스가 있습니다. 나는 그것을 사용하여 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) {
...
}
}
이 조각을 정의하는 방법이다는 클래스
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 클래스의 인스턴스를 아래처럼 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)이되어 널 포인터 예외가 발생합니다.
여기 정확히 무슨 일이 발생합니까? onCreateView()은 해당 조각에 대한 메소드가 수동으로 호출되기 전에 호출되지 않습니다. 또한, 왜 두 번째 탭 (DonorResultsFragment) 위의 발생하지 않습니다.
'TabsPagerAdapter' 게시 완료! – mmlooloo