2012-12-01 66 views

回答

3

是的,這是可能的。如果您使用的是ViewPager你可以這樣做:

_viewPager.getCurrentItem(); 

_pageListener = new PageListener(); 
_viewPager.setOnPageChangeListener(_pageListener); 

,並保持當前頁面的跟蹤與類似的東西:

private int _currentPage; 

    private static class PageListener extends SimpleOnPageChangeListener{ 
      public void onPageSelected(int position) { 
       Log.i(TAG, "page selected " + position); 
        _currentPage = position; 
     } 
    } 

否則你可以很容易地用TabAdapter這樣做:

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); 
      ((SherlockFragmentActivity) mContext).supportInvalidateOptionsMenu(); 
     } 

     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) { 

     } 
    } 

您只需要用一種或兩種方法保留當前頁面。例如,在onTabSelected

希望它可以幫助你 好運

相關問題