Error:(25, 94) error: incompatible types: SettingsFragment cannot be converted to Fragment

Error:(25, 94) error: incompatible types: SettingsFragment cannot be converted to Fragment

import android.os.Bundle;
import android.preference.PreferenceFragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
import android.support.v7.app.AppCompatActivity;

import static android.R.attr.fragment;

public class AppPreferences extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_note_detail);

        FragmentManager fragmentManager = getSupportFragmentManager();
        FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();

        SettingsFragment settingsFragment = new SettingsFragment();
       // fragmentTransaction.add(android.R.id.content, settingsFragment, "SETTING_FRAGMENT");

从这里开始的错误是 settingsFragment 错误是 Error:(25, 94) 错误:类型不兼容:无法将 SettingsFragment 转换为 Fragment

FragmentTransaction setting_fragment = fragmentTransaction.add(android.R.id.content, settingsFragment, "SETTING_FRAGMENT");
setting_fragment.commit();

这是我的设置片段

public  static class SettingsFragment extends PreferenceFragment{

    @Override
    public void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);

        addPreferencesFromResource(R.xml.app_preferences);
    }
}

你应该使用(如果你想保持兼容性)包含在支持 v7 兼容性库中的PreferenceFragmentCompat

PreferenceFragment 不包含在片段的兼容性集中,因此将 PreferenceFragment 更改为 PreferenceFragmentCompat 应该足以满足您的海豚。

检查 this

希望对您有所帮助

嘿,我找到了解决问题的方法 </p> <p>public class AppPreferences 扩展 AppCompatActivity {</p> <pre><code>@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_note_detail);

问题出在这段代码和这个 getSupportFragment(); 所以我只使用 getFragmentManager(); 及其作品 // 片段管理器 fragmentManager = getSupportFragmentManager(); // FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();</p> <p> </p> <pre><code> SettingsFragment settingsFragment = new SettingsFragment(); FragmentTransaction setting_fragment; setting_fragment = getFragmentManager().beginTransaction().add(android.R.id.content, settingsFragment, "SETTING_FRAGMENT"); setting_fragment.commit(); } public static class SettingsFragment extends PreferenceFragment { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // Load the preferences from an XML resource addPreferencesFromResource(R.xml.app_preferences); } } }