java - 无法从 android.support.v4.app.Fragment 转换为 android.app.Fragment

标签 java android android-fragments android-viewpager android-4.0-ice-cream-sandwich

我正在开发我的第一个 Android 应用,并且想直接使用 ICS API。到目前为止,我已经使用 ActionBar 创建了一个应用程序,并带有使用 Viewpager 和 Fragments 的可滑动标签。

但是,我确实遇到了一些我不断返回的错误。

根据我的实现方式,它总是会返回“类型不匹配”错误:“无法从 android.support.v4.app.Fragment 转换为 android.app.Fragment”。我已经尝试删除对任何一个的所有导入引用,当我只在 TabListener、FragmentActivity 和我的两个 Fragment 中使用 android.support.v4.app.Fragment 时会出现此错误。

错误发生在我的 TabListener 中:

import android.app.ActionBar;
import android.app.ActionBar.Tab;
import android.app.Activity;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentTransaction;
import android.support.v4.view.ViewPager;
import android.util.Log;

public class TabListener implements ActionBar.TabListener {
    private android.app.Fragment fragment;
    private Activity activity;
    private ViewPager pager;
    private FragmentTransaction ft;

    public TabListener(Activity activity, Fragment fragment, ViewPager pager) {
        this.activity = activity;
        this.fragment = fragment;
        this.pager = pager;
    }

    @Override
    public void onTabSelected(Tab tab, android.app.FragmentTransaction ft){     
        if (fragment == null) {
            ft.add(fragment, null);
        } else {
            ft.attach(fragment);
        }
    }

    @Override
    public void onTabReselected(Tab tab, android.app.FragmentTransaction ft){
        // TODO Auto-generated method stub
    }

    @Override
    public void onTabUnselected(Tab tab, android.app.FragmentTransaction ft){
        // TODO Auto-generated method stub  
    }
}

通过删除“android.app.FragmentTransaction ft”,将其替换为“FragmentTransaction ft”,问题就解决了。然后新的问题出现了:

The method onTabReselected(ActionBar.Tab, FragmentTransaction) of type TabListener must override or implement a supertype method TabListener.java

The method onTabSelected(ActionBar.Tab, FragmentTransaction) of type TabListener must override or implement a supertype method TabListener.java

The method onTabUnselected(ActionBar.Tab, FragmentTransaction) of type TabListener must override or implement a supertype method TabListener.java

The type TabListener must implement the inherited abstract method ActionBar.TabListener.onTabReselected(ActionBar.Tab, FragmentTransaction) TabListener.java

The type TabListener must implement the inherited abstract method ActionBar.TabListener.onTabSelected(ActionBar.Tab, FragmentTransaction) TabListener.java

The type TabListener must implement the inherited abstract method ActionBar.TabListener.onTabUnselected(ActionBar.Tab, FragmentTransaction) TabListener.java

这是怎么回事?

您可能理解,我是 Java 和 Android 开发的新手。我觉得我很接近,但我无法解决这个问题。我不明白为什么它要“从 android.support.v4.app.Fragment 转换为 android.app.Fragment,而我什至没有在任何地方导入 android.app.Fragment。

我猜这与使用兼容性包有关。 (在为最新版本的 SDK 创建应用程序时,我是否必须使用这个包?)

最佳答案

尝试使用 getSupportFragmentManager() 代替 getFragmentManager()

关于java - 无法从 android.support.v4.app.Fragment 转换为 android.app.Fragment,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8993348/

相关文章:

java - ANTLR - 左递归去除辅助

android - 像 html 一样显示 android TextViews 会 float div

android - 如何将 View 模型范围限定为父 fragment ?

Android - 动态添加 fragment

java - 如何在 Hibernate 中将 @OneToOne 关系映射到静态表

java - JCE 提供商的算法是如何定义的?

android - 与 Wifi Direct 的 p2p 连接中的信号强度?

java - 当我运行应用程序时,已排序的 ArrayList 未显示为已排序

java - ListView setAdapter 对空对象引用

java - Mono.fromCallable 与 Mono.fromSupplier