我正在编写我的第一个使用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。
发生了什么事?
答案 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);
}