Java 不兼容类型:HomeFragment无法在Android中转换为Fragment
这部分代码中有一个错误:Java 不兼容类型:HomeFragment无法在Android中转换为Fragment,java,android,android-fragments,Java,Android,Android Fragments,这部分代码中有一个错误: private void displayView(int position) { // update the main content by replacing fragments Fragment fragment = null; switch (position) { case 0: fragment = new HomeFragment(); break; ca
private void displayView(int position) {
// update the main content by replacing fragments
Fragment fragment = null;
switch (position) {
case 0:
fragment = new HomeFragment();
break;
case 1:
fragment =new FindPeopleFragment();
break;
case 2:
fragment = new PhotosFragment();
break;
case 3:
fragment = new CommunityFragment();
break;
case 4:
fragment = new PagesFragment();
break;
case 5:
fragment = new WhatsHotFragment();
break;
default:
break;
}
if (fragment != null) {
FragmentManager fragmentManager = getFragmentManager();
fragmentManager.beginTransaction()
.replace(R.id.frame_container, fragment).commit();
// update selected item and title, then close the drawer
mDrawerList.setItemChecked(position, true);
mDrawerList.setSelection(position);
setTitle(navMenuTitles[position]);
mDrawerLayout.closeDrawer(mDrawerList);
} else {
// error in creating fragment
Log.e("MainActivity", "Error in creating fragment");
}
}
我明白了
错误:不兼容的类型:HomeFragment无法转换为Fragment
这是进口:
package liorsiag.lgbt;
import android.app.FragmentManager;
import android.content.res.Configuration;
import android.content.res.TypedArray;
import android.os.Bundle;
import android.support.v4.app.ActionBarDrawerToggle;
import android.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.widget.DrawerLayout;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListView;
import java.util.ArrayList;
这是课程名称:
public class MainActivity extends FragmentActivity {
private DrawerLayout mDrawerLayout;
private ListView mDrawerList;
private ActionBarDrawerToggle mDrawerToggle;
不管我怎么做,我还是会犯这个错误
我已经尝试了很多导航抽屉教程,但没有一个是有效的。这似乎是一个导入问题 使用
getFragmentManager()
时,请确保您的Fragment
类扩展了android.app.Fragment
类
如果您使用的是
android.support.v4.app.Fragment
(请参阅您的导入),那么您需要使用getSupportFragmentManager()
希望它有帮助尝试改变
导入android.app.Fragment代码>
到
导入android.support.v4.app.Fragment代码>
将该支持库中的类也用于所有其他导入。另一个答案中提到的getSupportFragmentManager()
。在您的HomeFragment
类中
替换:
import android.app.Fragment;
与:
import android.support.v4.app.Fragment;
就我而言,我已将第1行更改为第2行
第1行:导入android.app.Fragment
第2行:导入android.support.v4.app.Fragment
它的工作方式是使用getSupportFragmentManager()
而不是getFragmentManager()
导入android.app.Fragment
使用getFragmentManager()
方法,但在必须删除导入之前android.support.v4.app.Fragment代码>您只需导入android.support.v4.app.Fragment;在所有FragmentClass()中;。
就是这样。在Android Studio 2.3中,getSupportFragmentManager与Android.support.v4.app配合使用,但Android Studio 3.1必须使用getFragmentManager如果您使用的是支持库,则应确保从支持库中导入片段和FragmentManager。您还需要确保加载支持片段管理器
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
//other imports here...
public class SomeActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_some);
FragmentManager fm = getSupportFragmentManager();
Fragment fragment = fm.findFragmentById(R.id.fragment_container);
if(fragment == null) {
fragment = new SomeFragment();
fm.beginTransaction().add(R.id.fragment_container, fragment).commit();
}
}
}
HomeFragment是否扩展了Fragment?HomeFragment是否扩展了Fragment?是否从FragmentActivity更改为Activity。是的,HomeFragment扩展了FragmentActivity,我将FragmentActivity更改为Activity,但它不起作用。DrawerLayout也使用Fragment,在您的情况下,它使用的是from support.v4 library,您还使用了基本android sdk的片段(它们不一样)。将这些作为v4.Fragment!=谢谢你。但是我现在仍然有一个关于这行的问题:FragmentManager FragmentManager=getSupportFragmentManager()
它说无法解析方法
如果活动
是碎片活动
就可以使用getFragmentManager()
如果不是这样,请使用getFragmentManager()
尝试过,但这一行:碎片管理器.beginTransaction().replace(R.id.frame_容器,fragment).commit()
是否存在此问题:错误:(191,52)错误:不兼容类型:android.support.v4.app.Fragment无法转换为android.app.Fragment
。确保Fragment
对象是android.support.v4.app.Fragment
而不是android.app.Fragment
确保没有解决问题。。。它说问题在于如何在activity_main.xml中显示片段。有什么帮助吗?
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
//other imports here...
public class SomeActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_some);
FragmentManager fm = getSupportFragmentManager();
Fragment fragment = fm.findFragmentById(R.id.fragment_container);
if(fragment == null) {
fragment = new SomeFragment();
fm.beginTransaction().add(R.id.fragment_container, fragment).commit();
}
}
}