2013-08-05 47 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();