android - getSupportFragmentManager 无法分配给 FragmentManager

标签 android android-fragments android-fragmentactivity

我正在使用 Android 编程中的教程编写我的第一个使用 fragment 的应用程序:Big Nerd Ranch 指南。

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

我是这样写的:

FragmentManager fm = getSupportFragmentManager();

但是 android studio 给我这个错误:

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

我不明白...我的印象是 FragmentManager 可以来自支持库,也可以不来自支持库,这取决于您是否要支持 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;

我在识别 fragment 类时遇到错误;

这是相关代码:

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

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

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

并说:

unknown class: 'fragment'

还有几个

unexpected token

在 if 语句的每个括号和一个

unexpected identifier

在双等号上。

这是怎么回事?

最佳答案

只需将 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);
}

关于android - getSupportFragmentManager 无法分配给 FragmentManager,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24524180/

相关文章:

php - Android:如何使我检索到的(从 mysql 中)JSON 解析数据添加到 ListView 每分钟刷新一次

android - 获取 WebView 的真实 X 和 Y 坐标

android - 跨多个 fragment 重用回调接口(interface)

android - 嵌套的 tabhost fragment android

android - 谷歌地图 fragment 出现但没有 map

java - 如何在 Android Studio 中将 Activity 转换为 fragment ?

android - 升级 Google Play Services 版本安全吗?如何测试是否一切正常?

java - 如何使用新的 androidx.media2.widget.VideoView

android fragment 在恢复时崩溃

android - setListAdapter 不适用于 Android 中的 Sherlock Fragment