为什么我不能在Android上实例化这个片段?

Eth*_*len 4 java eclipse android android-fragments

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

Fragment newfragment = new MainFragment();   
Run Code Online (Sandbox Code Playgroud)

这是我的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);
    }
}
Run Code Online (Sandbox Code Playgroud)

关于为什么会发生这种情况的任何想法?我有一种感觉,我正在寻找一些愚蠢的东西,而且我现在只是在漫长的一天中代码盲.

Com*_*are 21

确保两个地方都导入同一个Fragment班级.感觉有点像你要导入的一个地方android.app.Fragment(片段的原生API Level 11版本)和你要导入的其他地方android.support.v4.app.Fragment(来自Android Support包的片段).


Eth*_*len 8

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

import android.support.v4.app.Fragment;
Run Code Online (Sandbox Code Playgroud)

和我的MainFragment.java文件使用:

import android.app.Fragment;
Run Code Online (Sandbox Code Playgroud)

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