【问题标题】:Why can't I instantiate this Fragment on Android?为什么我不能在 Android 上实例化这个 Fragment?
【发布时间】:2012-07-11 00:00:26
【问题描述】:

这是我的代码。我在new MainFragment(); 下得到一条红线,错误为Type mismatch: cannot convert from WishlistFragment to Fragment

Fragment newfragment = new MainFragment();   

这是我的 MainFragment.java 文件的样子:

public class MainFragment extends Fragment {
    public MainFragment() {
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){
        return inflater.inflate(R.layout.fragment_main, container, false);
    }
}

关于为什么会发生这种情况的任何想法?我有一种感觉,我正在查看一些愚蠢的东西,而且我现在只是在漫长的一天中对代码视而不见。

【问题讨论】:

  • 首先,Eclipse 具体告诉你什么是问题?只是“一条红线”不是很信息。其次,要么删除你的构造函数(因为它没有做任何事情),要么至少链接到超类(这样Fragment 的构造函数就可以完成它的工作)。
  • 编辑了主要问题....错误是:“类型不匹配:无法从 WishlistFragment 转换为 Fragment”
  • 在你的代码中包含这样的默认构造函数是不必要的......只需删除它:)
  • 会的。我把它放在那里是因为我对可能导致问题的原因一无所知。

标签: java android eclipse android-fragments


【解决方案1】:

确保两个地方都导入相同的Fragment 类。感觉有点像在一个地方导入 android.app.Fragment(原生 API 级别 11 版本的 Fragment),而在其他地方导入 android.support.v4.app.Fragment(来自 Android Support 包的 Fragments)。

【讨论】:

  • 刚刚在您发布此内容时发现了这一点。谢谢!
  • 您好,只是想说声谢谢。这个答案让我省了很多麻烦!
【解决方案2】:

找出问题所在......我的 MainActivity.java 文件正在使用:

import android.support.v4.app.Fragment;

我的 MainFragment.java 文件正在使用:

import android.app.Fragment;

所以出现了不匹配。我使用 ICS 4.0 及更高版本作为我的最低 API 版本。将所有内容更改为导入到 v4 API 解决了我的问题。

【讨论】:

  • 我也犯了同样的错误
猜你喜欢
  • 2014-04-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多