Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 不兼容类型:HomeFragment无法在Android中转换为Fragment_Java_Android_Android Fragments - Fatal编程技术网

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();
        }

    }
}