java - TabMain 不是抽象的,不会覆盖 TabListener 中的抽象方法 onTabReselected(Tab,FragmentTransaction)

标签 java android android-fragments tabs swipeview

大家好。我正在尝试构建一个简单的应用程序,它支持具有滑动 View 功能的选项卡布局。我关注这个tutorial但没有成功。

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{

最佳答案

您为该接口(interface)使用了错误的 FragmentTransaction 类,它使用 android.app.FragmentTransaction,而不是 android.support.v4.app.FragmentTransaction 。由于您的方法签名与接口(interface)的签名不匹配,因此您实际上并没有实现正确的方法。旧的 ActionBar 及其相关类不适用于这些支持类。

ActionBar.TabListener docs

请注意,该类已被弃用,Google 建议您更改处理应用内导航的方式。

关于java - TabMain 不是抽象的,不会覆盖 TabListener 中的抽象方法 onTabReselected(Tab,FragmentTransaction),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33818916/

相关文章:

java - Java 中使用 HTTPClient 的 GZip POST 请求

java - 如何在java中对队列进行排序?

java - 如何解决 : "Error evaluating project ' :app'. 不支持的主次版本 52.0

Java 多线程和 Nodejs 集群

java - iText 生成的 PDF 在 Chrome 中无法正确显示

java - 使用 Retrofit2 和 rxJava2 解析来自 OpenWeatherMap 的数据

android - Android 上的 Asx 流

java - 是什么导致了 "Too Much Work On Main Thread"警告?

android - 使用 tabLayout 和 ViewPager 未在 Fragment 中调用 OnResume()

android - 在 Fragment 类中显示 ProgressDialog