2012-08-01 58 views
0

我試圖將我的Tab2設置爲使用ActionBarShelock最初選定的選項卡,但我無法開始工作。如何設置最初選擇的選項卡ActionBarSherlock

這些標籤工作正常,但我無法在應用程序啓動時選擇第二個標籤而不是第一個標籤。 這是我的代碼:

@Override 
public void onCreate(Bundle savedInstanceState) { 
    setTheme(R.style.AppThemeLightDarkActionBar); 
    super.onCreate(savedInstanceState); 

    getSupportActionBar().setDisplayShowTitleEnabled(true); 

    mViewPager = new ViewPager(this); 
    mViewPager.setId(R.id.pager); 

    setContentView(mViewPager); 

    ActionBar bar = getSupportActionBar(); 
    bar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); 

    mTabsAdapter = new TabsAdapter(this, mViewPager); 

    mTabsAdapter.addTab(bar.newTab().setText("Tab1"), Tab1.class, null); 
    mTabsAdapter.addTab(bar.newTab().setText("Tab2"), 
      Tab2.class, null); 
    mTabsAdapter.addTab(bar.newTab().setText("Tab3"), Tab3.class, 
      null); 
    mTabsAdapter.addTab(bar.newTab().setText("Tab4"), Tab4.class, null); 


} 

public static class TabsAdapter extends FragmentPagerAdapter implements 
     ActionBar.TabListener, ViewPager.OnPageChangeListener { 
    private final Context mContext; 
    private final ActionBar mActionBar; 
    private final ViewPager mViewPager; 
    private final ArrayList<TabInfo> mTabs = new ArrayList<TabInfo>(); 

    static final class TabInfo { 
     private final Class<?> clss; 
     private final Bundle args; 

     TabInfo(Class<?> _class, Bundle _args) { 
      clss = _class; 
      args = _args; 
     } 
    } 

    public TabsAdapter(SherlockFragmentActivity activity, ViewPager pager) { 
     super(activity.getSupportFragmentManager()); 
     mContext = activity; 
     mActionBar = activity.getSupportActionBar(); 
     mViewPager = pager; 
     mViewPager.setAdapter(this); 
     mViewPager.setOnPageChangeListener(this); 
    } 

    public void addTab(ActionBar.Tab tab, Class<?> clss, Bundle args) { 
     TabInfo info = new TabInfo(clss, args); 
     tab.setTag(info); 
     tab.setTabListener(this); 
     mTabs.add(info); 
     mActionBar.addTab(tab); 
     notifyDataSetChanged(); 
    } 

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

    @Override 
    public Fragment getItem(int position) { 
     TabInfo info = mTabs.get(position); 
     return Fragment.instantiate(mContext, info.clss.getName(), 
       info.args); 
    } 

    public void onPageScrolled(int position, float positionOffset, 
      int positionOffsetPixels) { 
    } 

    public void onPageSelected(int position) { 
     mActionBar.setSelectedNavigationItem(position); 
    } 

    public void onPageScrollStateChanged(int state) { 
    } 

    public void onTabSelected(Tab tab, FragmentTransaction ft) { 
     Object tag = tab.getTag(); 
     for (int i = 0; i < mTabs.size(); i++) { 
      if (mTabs.get(i) == tag) { 
       mViewPager.setCurrentItem(i); 
      } 
     } 
    } 

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

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

我該如何讓它工作? 謝謝。

回答

2

使用此爲您onCreate方法的末尾:

mViewPager.setCurrentItem(1); 

above method應該是從0開始,所以1是第二頁。

+0

非常感謝!有效。我已經嘗試過了,但在添加標籤之前我已經加入了它。在添加標籤後添加它。再次感謝。 – bond 2012-08-01 01:35:12

相關問題