为什么当前片段为空?

时间:2014-06-13 07:42:49

标签: android android-fragments

我正在主要活动的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)但它没有用。

1 个答案:

答案 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