选择标签不起作用

时间:2013-07-29 12:51:54

标签: android android-tabs

目前我的活动中有标签,我可以轻松地在标签之间滑动。 但这是一个错误: 我无法选择标签! enter image description here

我在新标签上。 如果我点击upcomming我会得到这个 enter image description here

我需要swype才能看到即将发布的内容! 为什么会这样? 这是我的代码:

 public class Taby extends SherlockFragmentActivity {
        FragmentTransaction transaction;
        static ViewPager mViewPager;

        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main1);

            Fragment tabOneFragment = new TabOne();
            Fragment tabTwoFragment = new TabTwo();

            PagerAdapter mPagerAdapter = new PagerAdapter(
                    getSupportFragmentManager());
            mPagerAdapter.addFragment(tabOneFragment);
            mPagerAdapter.addFragment(tabTwoFragment);
            mViewPager = (ViewPager) findViewById(R.id.pager);
            mViewPager.setAdapter(mPagerAdapter);
            mViewPager.setOffscreenPageLimit(2);
            mViewPager.setCurrentItem(0);
            getSupportActionBar().setDisplayHomeAsUpEnabled(true);

            mViewPager
                    .setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() {
                        @Override
                        public void onPageSelected(int position) {
                            getSupportActionBar().setSelectedNavigationItem(
                                    position);
                        }
                    });

            ActionBar ab = getSupportActionBar();
            ab.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
            com.actionbarsherlock.app.ActionBar.Tab tab1 = ab
                    .newTab()
                    .setText("New")
                    .setTabListener(
                            new TabListener<TabOne>(this, "tabone", TabOne.class));

            com.actionbarsherlock.app.ActionBar.Tab tab2 = ab
                    .newTab()
                    .setText("Upcoming")
                    .setTabListener(
                            new TabListener<TabTwo>(this, "tabtwo", TabTwo.class));

            ab.addTab(tab1);
            ab.addTab(tab2);
        }

        @Override
        public boolean onCreateOptionsMenu(Menu menu) {
            super.onCreateOptionsMenu(menu);
            getSupportMenuInflater().inflate(R.menu.like, menu);
            return true;

        }

        @Override
        public boolean onOptionsItemSelected(MenuItem item) {
            switch (item.getItemId()) {
            case android.R.id.home:
                finish();
                break;
            case R.id.facebooklike:
                String facebookScheme = "fb://profile/" + "192346130896055";
                Intent facebookIntent = new Intent(Intent.ACTION_VIEW,
                        Uri.parse(facebookScheme));
                startActivity(facebookIntent);
                break;

            }
            return true;
        }

        @SuppressLint("NewApi")
        public static class TabListener<T extends Fragment> implements
                ActionBar.TabListener {
            private Fragment mFragment;
            private final Activity mActivity;
            private final String mTag;
            private final Class<T> mClass;

            public TabListener(Activity activity, String tag, Class<T> clz) {
                mActivity = activity;
                mTag = tag;
                mClass = clz;
            }

            public void onTabSelected(Tab tab, FragmentTransaction ft) {
                if (mFragment == null) {
                    mFragment = Fragment.instantiate(mActivity, mClass.getName());
                    ft.add(android.R.id.content, mFragment, mTag);
                } else {
                    ft.attach(mFragment);
                }
            }

            public void onTabUnselected(Tab tab, FragmentTransaction ft) {
                if (mFragment != null) {
                    ft.detach(mFragment);
                }
            }

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

            public void onTabReselected(Tab arg0,
                    android.app.FragmentTransaction arg1) {

            }

            @SuppressLint("NewApi")
            public void onTabSelected(Tab arg0, android.app.FragmentTransaction arg1) {

                mViewPager.setCurrentItem(arg0.getPosition());
            }

            public void onTabUnselected(Tab arg0,
                    android.app.FragmentTransaction arg1) {

            }

            @Override
            public void onTabSelected(com.actionbarsherlock.app.ActionBar.Tab tab,
                    FragmentTransaction ft) {
                // TODO Auto-generated method stub

            }

            @Override
            public void onTabUnselected(
                    com.actionbarsherlock.app.ActionBar.Tab tab,
                    FragmentTransaction ft) {
                // TODO Auto-generated method stub

            }

            @Override
            public void onTabReselected(
                    com.actionbarsherlock.app.ActionBar.Tab tab,
                    FragmentTransaction ft) {
                // TODO Auto-generated method stub

            }
        }

        public class PagerAdapter extends FragmentPagerAdapter {

            private final ArrayList<Fragment> mFragments = new ArrayList<Fragment>();

            public PagerAdapter(FragmentManager manager) {
                super(manager);
            }

            public void addFragment(Fragment fragment) {
                mFragments.add(fragment);
                notifyDataSetChanged();
            }

            @Override
            public int getCount() {
                return mFragments.size();
            }

            @Override
            public Fragment getItem(int position) {
                return mFragments.get(position);
            }
        }

    }

1 个答案:

答案 0 :(得分:1)

mViewPager.setCurrentItem(position);内的

onPageSelected()就像那样:

        mViewPager
                .setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() {
                    @Override
                    public void onPageSelected(int position) {
                        getSupportActionBar().setSelectedNavigationItem(
                                position);
                        mViewPager.setCurrentItem(position);
                    }
                });