Java 添加PreferenceFragment时片段管理器编译错误

Java 添加PreferenceFragment时片段管理器编译错误,java,android,android-fragments,preferencefragment,Java,Android,Android Fragments,Preferencefragment,我有一个活动,我把所有的片段都放进去。我现在想添加一个PreferenceFragment,而不是普通的片段。我正在为此使用非支持版本的片段管理器 在编译过程中,我遇到以下错误: java.lang.RuntimeException: Unable to start activity ComponentInfo{app_identifier/app_identifier.ActMain}: java.lang.NullPointerException: Attempt to write to

我有一个活动,我把所有的片段都放进去。我现在想添加一个PreferenceFragment,而不是普通的片段。我正在为此使用非支持版本的片段管理器

在编译过程中,我遇到以下错误:

 java.lang.RuntimeException: Unable to start activity ComponentInfo{app_identifier/app_identifier.ActMain}: java.lang.NullPointerException: Attempt to write to field 'android.app.FragmentManagerImpl android.app.Fragment.mFragmentManager' on a null object reference
我通过导航抽屉选择片段,所以我有一个switch语句来选择片段。下面是它的外观,切分到重要部分:

private void displaySelectedScreen(int id) {
        android.app.Fragment fragment = null;
        PreferenceFragment preferenceFragment = null;

        int fragment_type;

        switch (id) {
            case R.id.nav_compare: {
                fragment = new Fragment_Compare();
                fragment_type = 0;
                break;
            }
            case R.id.nav_settings: {
                preferenceFragment = new Fragment_Settings();
                fragment_type = 1;
                break;
            }
            default: {
                fragment = new Fragment_Compare();
                fragment_type = 0;
                break;
            }
        }

        android.app.FragmentManager fragmentManager = getFragmentManager();
        switch (fragment_type) {
            case 0: {
                fragmentManager.beginTransaction().replace(R.id.content_act_compare, fragment).commit();
            }
            case 1: {
                fragmentManager.beginTransaction().replace(R.id.content_act_compare, preferenceFragment).commit();
            }
        }
    }
编译器在
情况1
中崩溃

普通片段类扩展了普通的
android.app.Fragment
类,而设置类扩展了
android.preference.PreferenceFragment

我尝试过使用SupportV4库,但我首先不需要它,而且它也不起作用。我猜我必须以不同的方式来调用该事务,但我不知道如何调用

非常感谢您的帮助

编辑:我的片段设置类的代码:

import android.os.Bundle;
import android.preference.PreferenceFragment;
import android.support.annotation.Nullable;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

public class Fragment_Settings extends PreferenceFragment {
    @Override
    public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);

        addPreferencesFromResource(R.xml.preferences);
        getActivity().setTitle(R.string.nav_item_settings);
    }

    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        return inflater.inflate(R.layout.fragment_settings_layout, container, false);
    }
}

我认为
replace()
方法只接受一个普通的片段类,是否有一个管理器或函数接受PreferenceFragment?您列出的错误是一个运行时错误,而不是编译错误。你采取了哪些步骤来实现这一目标?您确定case语句中出现错误吗?
MFFragmentManager
可能为空。向我们展示更多的代码,特别是在出现
MFFragmentManager
的地方。是的,我确信,当我注释行时,它不再崩溃。我的代码中没有
MFFragmentManager
,但我编辑发布并添加了设置类的代码