2014-09-30 64 views
1

我想在android上做一個選項卡布局,我試圖添加選項卡噸操作欄,但它不工作。我的問題是,在功能setTabListener((android.app.ActionBar.TabListener) actionBar));的這一步中,錯誤日誌表示cannot be cast to android.app.ActionBar$TabListener。我已經設置了setTabListener(this)this在我的函數參考片段,我不知道爲什麼。如何將選項卡偵聽器設置爲一個ActionBar

這是我的全部功能:

@TargetApi(Build.VERSION_CODES.ICE_CREAM_SANDWICH) 
@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 
    // Inflate the layout for this fragment 
    View v = inflater.inflate(R.layout.fragment_clubs_pagesn, container, false); 

    // Initilization 
    viewPager = (ViewPager) v.findViewById(R.id.pager); 
    actionBar = getActivity().getActionBar(); 
    mAdapter = new TabsPagerAdapter(getFragmentManager()); 

    viewPager.setAdapter(mAdapter); 
    actionBar.setHomeButtonEnabled(false); 
    //actionBar.setNavigationMode(ActionBarNAVIGATION_MODE_STANDARD); 
    // Adding Tabs 
    for (String tab_name : tabs) { 
     actionBar.addTab(actionBar.newTab().setText(tab_name) 
       .setTabListener((android.app.ActionBar.TabListener) actionBar)); } 

    /** 
    * on swiping the viewpager make respective tab selected 
    * */ 
    viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() { 

     @Override 
     public void onPageSelected(int position) { 
      // on changing the page 
      // make respected tab selected 
      actionBar.setSelectedNavigationItem(position); 
     } 

     @Override 
     public void onPageScrolled(int arg0, float arg1, int arg2) { 
     } 

     @Override 
     public void onPageScrollStateChanged(int arg0) { 
     } 
    }); 

    return v; 

} 

回答

0

.setTabListener((android.app.ActionBar.TabListener)動作條)

是錯誤的,因爲actionBar劑量沒有實現listener,您必須在您的fragment或您的activity中實施listener,然後在片段中調用例如:

setTabListener(this); 

例如這是示例代碼activity

public class MainActivity extends FragmentActivity implements ActionBar.TabListener { 

    ViewPager viewPager=null; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     final ActionBar actionBar=getActionBar(); 
     actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); 
     addTabs(actionBar); 


     } 
    private void addTabs(ActionBar actionBar) 
    { 
     ActionBar.Tab tab1=actionBar.newTab(); 
     tab1.setText("Tab 1"); 
     tab1.setTabListener(this); 

     ActionBar.Tab tab2=actionBar.newTab(); 
     tab2.setText("Tab 2"); 
     tab2.setTabListener(this); 

     ActionBar.Tab tab3=actionBar.newTab(); 
     tab3.setText("Tab 3"); 
     tab3.setTabListener(this); 

     actionBar.addTab(tab1); 
     actionBar.addTab(tab2); 
     actionBar.addTab(tab3); 
    } 

    @Override 
    public void onTabSelected(ActionBar.Tab tab, FragmentTransaction ft) { 

    } 

    @Override 
    public void onTabUnselected(ActionBar.Tab tab, FragmentTransaction ft) { 

    } 

    @Override 
    public void onTabReselected(ActionBar.Tab tab, FragmentTransaction ft) { 

    } 
} 

} 

更新:

for (String tab_name : tabs) { 
     actionBar.addTab(actionBar.newTab().setText(tab_name) 
       .setTabListener(YourFragment.this); } 
+0

謝謝,但我已經片段實現ActionBar.TabListener – 2014-09-30 09:24:53

+1

所以使用'.setTabListener(YourFragment。這一點);' – mmlooloo 2014-09-30 09:26:05

相關問題