我正在主要活动的OnCreate
方法中创建一个片段。这是代码。
Object lockObject = new Object();
synchronized (lockObject) {
collectionPagerAdapter = new CollectionPagerAdapter(getSupportFragmentManager());
collectionPagerAdapter.lstDepartmanlar = lstDepartmanlar;
collectionPagerAdapter.lstMasaDizayn = lstMasaDizayn;
collectionPagerAdapter.masaPlanIsmi = masaPlanIsmi;
mViewPager = (ViewPager) findViewById(R.id.pager);
mViewPager.setAdapter(collectionPagerAdapter);
mViewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
actionBar.setSelectedNavigationItem(position);
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
actionBar = getActionBar();
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
for (Departman departman : lstDepartmanlar) {
tab = actionBar.newTab().setText(departman.DepartmanAdi);
tab.setTabListener(this);
actionBar.addTab(tab);
}
}
viewPagerCreated=true;
fragment[0] = (FragmentMasaDesign) getSupportFragmentManager().getFragments().get(mViewPager.getCurrentItem());
创建ViewPager
之后我想获取当前片段,但它会抛出一个错误,表示片段为空。我如何知道已完成ViewPager
并创建了片段?我曾尝试使用synchronized (lockObject)
但它没有用。
答案 0 :(得分:0)
删除此行:
fragment[0] = (FragmentMasaDesign) getSupportFragmentManager().getFragments().get(mViewPager.getCurrentItem());
来自您的onCreate()
,而是将其添加到onStart()
:
@Override
protected void onStart(){
super.onStart();
fragment[0] = (FragmentMasaDesign) getSupportFragmentManager().getFragments().get(mViewPager.getCurrentItem());
}
在这种情况下,我不相信你需要使用synchronized
。