2015-11-20 3 views
1

Добрый день, ребята. Я пытаюсь создать простое приложение, поддерживающее компоновку вкладок с помощью функции просмотра прокрутки. Я следую этому tutorial, но не добился успеха.TabMain не является абстрактным и не переопределяет абстрактный метод onTabReselected (Tab, FragmentTransaction) в TabListener

package com.example.project.project; 

import android.os.Bundle; 
import android.support.v4.app.FragmentActivity; 
import android.support.v4.app.FragmentTransaction; 
import android.support.v4.view.ViewPager; 
import android.app.ActionBar; 
import android.view.Menu; 

public class TabMain extends FragmentActivity implements ActionBar.TabListener{ 

    private ViewPager viewPager; 
    private ActionBar actionBar; 
    private TabsFragmentPagerAdapter tabsAdapter; 
    private String[] days = new String[]{"Information","Claim"}; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.tab_main); 
     viewPager = (ViewPager) findViewById(R.id.viewPager); 
     tabsAdapter = new TabsFragmentPagerAdapter(getSupportFragmentManager()); 
     viewPager.setAdapter(tabsAdapter); 
     actionBar = getActionBar(); 
     actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); 
     for(int i=0; i<2; i++){ 
      actionBar.addTab(actionBar.newTab().setText(days[i]).setTabListener(this)); 
     } 
     viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() { 

      @Override 
      public void onPageSelected(int arg) { 
       // TODO Auto-generated method stub 
       actionBar.setSelectedNavigationItem(arg); 
      } 

      @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 

      } 
     }); 

    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.menu_main, menu); 
     return true; 
    } 

    public void onTabReselected(ActionBar.Tab arg0, FragmentTransaction arg1) { 
     // TODO Auto-generated method stub 

    } 


    public void onTabSelected(ActionBar.Tab tab, FragmentTransaction arg1) { 
     // TODO Auto-generated method stub 
     viewPager.setCurrentItem(tab.getPosition()); 
    } 


    public void onTabUnselected(ActionBar.Tab arg0, FragmentTransaction arg1) { 
     // TODO Auto-generated method stub 

    } 
} 

Я следую каждому шагу из учебника, но я получаю ошибку, как показано ниже.

Error:(13, 8) error: TabMain is not abstract and does not override abstract method onTabReselected(Tab,FragmentTransaction) in TabListener 
Note: Some input files use or override a deprecated API. 
Note: Recompile with -Xlint:deprecation for details. 
Error:Execution failed for task ':app:compileDebugJavaWithJavac'. 
> Compilation failed; see the compiler error output for details. 

И я получаю красную линию под этим утверждением public class TabMain extends FragmentActivity implements ActionBar.TabListener{

ответ

1

Вы используете неправильный FragmentTransaction класс для этого интерфейса, который использует android.app.FragmentTransaction, не android.support.v4.app.FragmentTransaction. Поскольку ваша подпись метода не соответствует интерфейсу, вы на самом деле не реализуете правильный метод. Старый ActionBar и связанные с ним классы не работают с этими классами поддержки.

ActionBar.TabListener docs

Пожалуйста, обратите внимание, что этот класс был устаревшим, и Google рекомендует изменить, как вы справляетесь навигации в вашем приложении.

+0

Что за глупая ошибка. Спасибо :) – John

+1

Нет, это не глупая ошибка. Их довольно легко перепутать, так как они содержали одни и те же имена классов в пакете поддержки. Вещи немного запутались, когда они выпустили эту библиотеку. –

+0

@ John Я забыл упомянуть, что если вы хотите сохранить вкладки ActionBar, пакет поддержки v7 имеет [замену для этого интерфейса] (http://developer.android.com/reference/android/support/v7/app /ActionBar.TabListener.html). –

Смежные вопросы

 Смежные вопросы