我正在使用 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/