【问题标题】:getSupportFragmentManager cant be assigned to FragmentManagergetSupportFragmentManager 不能分配给 FragmentManager
【发布时间】:2014-07-02 06:21:00
【问题描述】:

我正在编写我的第一个使用片段的应用程序,使用的是 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 可以来自支持库,也可以不来自支持库,这取决于您是否要支持 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

在 if 语句和 a 的每个括号上

unexpected identifier

在双等号上。

发生了什么事?

【问题讨论】:

    标签: android android-fragments android-fragmentactivity


    【解决方案1】:

    只需将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.support.v4.app.FragmentManager
    • 谢谢!但现在我有另一个问题。我会更新我原来的帖子
    • 漂亮!我设法将我的代码放在 onCreate 之外...感谢您的快速回复!
    猜你喜欢
    • 1970-01-01
    • 2021-05-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-19
    • 2022-01-10
    相关资源
    最近更新 更多