getSupportFragmentManager无法分配给FragmentManager

时间:2014-07-02 06:21:00

标签: android android-fragments android-fragmentactivity

我正在编写我的第一个使用Android编程教程的片段:Big Nerd Ranch Guide。

我创建了一个片段和相应的布局,现在我想将片段管理器添加到将使用它的父片段。

我写了这个:

FragmentManager fm = getSupportFragmentManager();

但是android studio正在给我这个错误:

Error:(19, 51) error: incompatible types
required: android.app.FragmentManager
found:    android.support.v4.app.FragmentManager

我不明白......我的印象是FragmentManager可以来自支持库,取决于你是否要支持pre-API 11版本。

改变了什么?

这些是我的进口商品:

import android.app.FragmentManager;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;

当我改变时:

import android.app.FragmentManager;

import android.support.v4.app.FragmentManager;

我在识别片段类时遇到错误;

这是相关代码:

FragmentManager fm = getSupportFragmentManager();
Fragment fragment = fm.findFragmentById(R.id.fragmentContainer);

if (fragment == null){
   fragment = new CrimeFragment();
   fm.beginTransaction().add(R.id.fragmentContainer, fragment).commit();
}

错误是突出显示该行     if(fragment == null){

并说:

unknown class: 'fragment'

以及一些

unexpected token
语句的每个括号上的

unexpected identifier

on double equals。

发生了什么事?

1 个答案:

答案 0 :(得分:6)

只需将import android.app.FragmentManager;更改为import android.support.v4.app.FragmentManager;

即可

对于您编辑过的问题:检查您的代码放置位置并仔细检查这些多个括号。通过将代码放在任何方法之外,我能够重现您的问题:

FragmentManager fm = getSupportFragmentManager();
Fragment fragment = fm.findFragmentById(R.id.fragmentContainer);

if (fragment == null){
    fragment = new CrimeFragment();
    fm.beginTransaction().add(R.id.fragmentContainer, fragment).commit();
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    // Inflate the layout for this fragment
    return inflater.inflate(R.layout.fragment_profile_holder, container, false);
}