2013-08-05 30 views
0

我需要幫助在tablistener類實現訪問一些變量,比如我要訪問爲int nTabSelected = tab.getPosition(),並用它在公共void函數在同內的變量活動,這裏是我的編碼,感謝訪問私有類Tablistener

private class TabListener<T extends Fragment> implements 
ActionBar.TabListener { 
    private Fragment mFragment; 
    private final Activity mActivity; 
    private final String mTag; 
    private final Class<T> mClass; 

    /** 
    * Constructor used each time a new tab is created. 
    * 
    * @param activity 
    *   The host Activity, used to instantiate the fragment 
    * @param tag 
    *   The identifier tag for the fragment 
    * @param clz 
    *   The fragment's Class, used to instantiate the fragment 
    */ 
    public TabListener(Activity activity, String tag, Class<T> clz) { 
     mActivity = activity; 
     mTag = tag; 
     mClass = clz; 
    } 

    public void onTabSelected(Tab tab, FragmentTransaction ft) { 

     int nTabSelected = tab.getPosition(); 

     // Check if the fragment is already initialized 
     if (mFragment == null) { 
      // If not, instantiate and add it to the activity 
      mFragment = Fragment.instantiate(mActivity, mClass.getName()); 
      ft.add(android.R.id.content, mFragment, mTag); 
     } else { 
      // If it exists, simply attach it in order to show it 
      ft.attach(mFragment); 
     } 
    } 

    public void onTabUnselected(Tab tab, FragmentTransaction ft) { 
     if (mFragment != null) { 
      // Detach the fragment, because another one is being attached 
      ft.detach(mFragment); 
     } 
    } 

    public void onTabReselected(Tab tab, FragmentTransaction ft) { 
     // User selected the already selected tab. Usually do nothing. 
    } 
} 

,這是我的功能

public void GeneraVentas() { 

    /* genera tres etiquetas para diferenciar las jugadas*/ 
    String tipoQN = "Nu"; 
    String tipoPL = "Pl"; 
    String tipoTR = "Tr"; 

    jgds = playDisplayed; 
    valorJugada = numberDisplayed; 
      .... 
} 

回答

0

首先,你需要在你TabListener一個成員變量來存儲值,然後作出一個getter訪問它。

private class TabListener<T extends Fragment> implements ActionBar.TabListener { 
    private int mSelectedTab = -1; 
    .... 
    public void onTabSelected(Tab tab, FragmentTransaction ft) { 
     mSelectedTab = tab.getPosition(); 
     .... 
    public int getSelectedTab(){ 
     return mSelectedTab; 
    } 
} 

然後,您可以創建一個新的偵聽器並從中獲取選定的選項卡。

TabListener listener = new TabListener(); 
.... 
int tab = listener.getSelectedTab();