【问题标题】:Android - App crashes, using Swipe Tab ViewsAndroid - 应用程序崩溃,使用滑动选项卡视图
【发布时间】:2015-08-28 17:13:45
【问题描述】:

我查看了互联网上所有关于 Android 可滑动标签视图的教程。每次我使用不同的代码时,它都会崩溃! logcat 给出了这个错误:

Caused by: java.lang.NullPointerException: Attempt to invoke virtual      
     method 'void android.app.ActionBar.setNavigationMode(int)' on a null 
     object reference

我不知道为什么这不起作用。这是我的 MainActivity 代码:

public class MainActivity extends FragmentActivity implements
    ActionBar.TabListener {

private ViewPager viewPager;
private ActionBar actionBar;
private TabsPagerAdapter tabPagerAdapter;
private String[] tabs = {"Missed Calls", "Dialled", "Received"};

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    viewPager = (ViewPager) findViewById(R.id.pager);
    tabPagerAdapter = new TabsPagerAdapter(getSupportFragmentManager());
    viewPager.setAdapter(tabPagerAdapter);

    actionBar = getActionBar();
    actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
    for (String tab_name : tabs) {
        actionBar.addTab(actionBar.newTab().setText(tab_name)
                .setTabListener(this));
    }

    viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {

        /**
         * on swipe select the respective tab
         * */
        @Override
        public void onPageSelected(int position) {
            actionBar.setSelectedNavigationItem(position);
        }

        @Override
        public void onPageScrolled(int arg0, float arg1, int arg2) {
        }

        @Override
        public void onPageScrollStateChanged(int arg0) {
        }
    });
}

@Override
public void onTabReselected(Tab tab, FragmentTransaction ft) {
}

@Override
public void onTabSelected(Tab tab, FragmentTransaction ft) {
    viewPager.setCurrentItem(tab.getPosition());
}

@Override
public void onTabUnselected(Tab tab, FragmentTransaction ft) {
}

【问题讨论】:

标签: android tabs tabview


【解决方案1】:

我认为你在这里得到了 actionBar 的 null 值:

actionBar = getActionBar(); 
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);

改成

actionBar = getSupportActionBar(); 

使用导入:

import android.support.v7.app.ActionBarActivity;

记住,你必须从ActionBarActivity扩展

public class MainActivity extends ActionBarActivity {

更多信息:

如果您使用的是支持库

import android.support.v7.app.ActionBarActivity;

public class MainActivity extends ActionBarActivity {

使用 getSupportActionBar() 而不是getActionBar()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-06-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多