【问题标题】:Why is the current fragment null?为什么当前片段为空?
【发布时间】:2014-06-13 17:25:01
【问题描述】:

我正在主要活动的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),但它不起作用。

【问题讨论】:

  • 你在哪里接触到这个?如果您回复将不胜感激:)

标签: android android-fragments


【解决方案1】:

删除这一行:

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

【讨论】:

  • 它仍然抛出NullPointerException at com.res_otomasyon.resotomasyon.MainScreen.onStart(MainScreen.java:238)这个错误:/
  • 你能告诉我MainScreen.java:238是什么
  • fragment[0] = (FragmentMasaDesign) getSupportFragmentManager().getFragments().get(mViewPager.getCurrentItem()); Line:238 是上面抛出错误的代码。
猜你喜欢
  • 2016-08-29
  • 2021-11-19
  • 1970-01-01
  • 2017-07-06
  • 1970-01-01
  • 2019-12-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多