0

我将 ActionBarSherlock 与 ViewPager 一起使用,导航模式设置为显示我的选项卡。我有 3 个工作正常的选项卡。我的问题是,如果我尝试滑动到不存在的第四个选项卡,它会使我的应用程序崩溃。我不确定这是在哪里发生的,需要一些帮助。这是我第一次尝试应用程序,欢迎任何反馈。

片段:

    private ViewPager mViewPager;

private SherlockFragment mFragCodes;
private SherlockFragment mFragDeals;
private SherlockFragment mFragProgInfo;
private SherlockFragment mFragTemp;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    mViewPager = (ViewPager) findViewById(R.id.pager);
    mViewPager.setAdapter(new MainPagerAdapter(
            getSupportFragmentManager()));
    mViewPager.setOnPageChangeListener(this);
    //mViewPager.setPageMarginDrawable(R.drawable.border);
    mViewPager.setPageMargin(16);

    final ActionBar actionBar = getSupportActionBar();
    actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);

    actionBar.addTab(actionBar.newTab()
            .setText(R.string.tab_codes_title)
            .setTabListener(this));
    actionBar.addTab(actionBar.newTab()
            .setText(R.string.tab_deals_title)
            .setTabListener(this));
    actionBar.addTab(actionBar.newTab()
            .setText(R.string.tab_program_info_title)
            .setTabListener(this));

和我的页面适配器:

    private class MainPagerAdapter extends FragmentPagerAdapter {
    public MainPagerAdapter(FragmentManager fm) {
        super(fm);
    }

    @Override
    public SherlockFragment getItem(int position) {


        switch (position) {
        case 0:
            return (mFragCodes = new frag_codes());

        case 1:
            return (mFragDeals = new frag_deals());

        case 2:
            return (mFragProgInfo = new frag_programming());

        }
        //if nothing is returned
        return mFragTemp = new SherlockFragment();
    }


    @Override
    public int getCount() {
         return R.string.tab_count;
    }
}

我应该包括任何其他信息吗?

4

2 回答 2

1

查看Swipey Tabs 示例和 ActionBarSherlock 库 (FragmentTabsPager) 附带的示例文件夹中包含的示例,以查看选项卡适配器的工作示例。此外,请包括其他信息,主要是异常的堆栈跟踪、布局和完整的类,包括声明和导入。

据我所知,您缺少implements应该实施的部分ActionBar.TabListener, ViewPager.OnPageChangeListener

于 2013-04-30T04:32:40.260 回答
1

只是说:

@Override
public int getCount() {
     return 3;
}
于 2013-05-22T14:44:23.793 回答