2014-12-06 1 views
0

Я хочу заменить TabHost и реализовать ActionBar, но мне грозит проблема: первая строка из главной операции (public class MainActivity extends FragmentActivity implements ActionBar.TabListener{) дает мне ошибку: Класс «MainActivity» должен быть объявлен абстрактным или реализуют абстрактный метод "onTabSelected (Tab, FragmentTransaction)" в TabListenerЗамена TabHost на ActionBar

public class MainActivity extends FragmentActivity implements ActionBar.TabListener{ 
    private DrawerLayout mDrawerLayout; 
    private ListView mDrawerList; 
    private ActionBarDrawerToggle mDrawerToggle; 
    private CharSequence mDrawerTitle; 
    private CharSequence mTitle; 
    private String[] navMenuTitles; 
    private TypedArray navMenuIcons;  
    private ArrayList<NavDrawerItem> navDrawerItems; 
    private NavDrawerListAdapter adapter; 

    ActionBar actionbar; 
    ViewPager viewpager; 
    FragmentPageAdapter ft; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN); 
     setContentView(R.layout.activity_main); 

     viewpager = (ViewPager) findViewById(R.id.pager); 
     ft = new FragmentPageAdapter(getSupportFragmentManager()); 
     actionbar = getActionBar(); 
     viewpager.setAdapter(ft); 
     actionbar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); 
     actionbar.addTab(actionbar.newTab().setText("Tab1").setTabListener(this)); 
     actionbar.addTab(actionbar.newTab().setText("Tab2").setTabListener(this)); 
     actionbar.addTab(actionbar.newTab().setText("Tab3").setTabListener(this)); 
     viewpager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() { 
      @Override 
      public void onPageSelected(int arg0) { 
       actionbar.setSelectedNavigationItem(arg0); 
      } 
      @Override 
      public void onPageScrolled(int arg0, float arg1, int arg2) { 
       // TODO Auto-generated method stub 
      } 
      @Override 
      public void onPageScrollStateChanged(int arg0) { 
       // TODO Auto-generated method stub 
      } 

     }); 

FragmentPageAdapter.java

import android.support.v4.app.Fragment; 
import android.support.v4.app.FragmentManager; 
import android.support.v4.app.FragmentPagerAdapter; 

public class FragmentPageAdapter extends FragmentPagerAdapter { 
    public FragmentPageAdapter(FragmentManager fm) { 
     super(fm); 
    } 
    @Override 
    public Fragment getItem(int arg0) { 
     // TODO Auto-generated method stub 
     switch (arg0) { 
      case 0: 
       return new Tab1(); 
      case 1: 
       return new Tab2(); 
      case 2: 
       return new Tab3(); 
      default: 
       break; 
     } 
     return null; 
    } 
    @Override 
    public int getCount() { 
     // TODO Auto-generated method stub 
     return 3; 
    } 
} 

ответ

0

Вы должны реализовать ActionBar.TabListener. Для этого создайте эти функции в своей деятельности:

public void onTabReselected(ActionBar.Tab tab, FragmentTransaction ft) { 
// Called when a tab that is already selected is chosen again by the user. 
} 
public void onTabSelected(ActionBar.Tab tab, FragmentTransaction ft) { 
    // Called when a tab enters the selected state. 
} 
public void onTabUnselected(ActionBar.Tab tab, FragmentTransaction ft) { 
    // Called when a tab exits the selected state. 
} 
Смежные вопросы