向操作栏添加选项卡

时间:2015-01-07 20:31:51

标签: android

为什么这段代码崩溃我完全根据谷歌的指导方针这样做,但我在行上得到一个空指针异常

 final ActionBar actionBar = getActionBar();

这是完整的代码。我正在按照我在这里链接到的http://developer.android.com/training/implementing-navigation/lateral.html

的开发页面进行此操作
    super.onCreate(savedInstanceState);
    getWindow().requestFeature(Window.FEATURE_ACTION_BAR);
    setContentView(R.layout.pager_view);  

    //TabSetup
    tabPagerAdapter = new TabPagerAdapter(getSupportFragmentManager());
    mViewPager = (ViewPager) findViewById(R.id.pager);
    mViewPager.setAdapter(tabPagerAdapter);
    mViewPager.setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() {

        @Override
        public void onPageSelected(int position) {

            getActionBar().setSelectedNavigationItem(position);
        }


    });

    final ActionBar actionBar = getActionBar();
    assert actionBar != null;
    actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);


    ActionBar.TabListener tabListener = new ActionBar.TabListener() {


        @Override
        public void onTabSelected(ActionBar.Tab tab, android.app.FragmentTransaction ft) {
            mViewPager.setCurrentItem(tab.getPosition());
        }

        @Override
        public void onTabUnselected(ActionBar.Tab tab, android.app.FragmentTransaction ft) {

        }

        @Override
        public void onTabReselected(ActionBar.Tab tab, android.app.FragmentTransaction ft) {

        }
    };

    //ADD THE APP'S 3 TABS
    actionBar.addTab(actionBar.newTab().setText("News").setTabListener(tabListener));
    actionBar.addTab(actionBar.newTab().setText("Surveys").setTabListener(tabListener));
    actionBar.addTab(actionBar.newTab().setText("Connect").setTabListener(tabListener));

}

1 个答案:

答案 0 :(得分:2)

请注意,Android 5.0不推荐使用操作栏标签。

除此之外,您可能正在使用没有本机操作栏的主题,例如Theme.AppCompat。如果您将appcompat-v7Theme.AppCompat一起使用,请确保您继承ActionBarActivity,然后使用getSupportActionBar()代替getActionBar()