错误:(25,94)错误:不兼容的类型:SettingsFragment无法转换为Fragment

时间:2016-11-07 08:00:56

标签: java android android-fragments fragmenttransaction

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,错误是错误:(25,94)错误:不兼容的类型:SettingsFragment无法转换为Fragment

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

这是我的settingsFragment

public  static class SettingsFragment extends PreferenceFragment{

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

        addPreferencesFromResource(R.xml.app_preferences);
    }
}

2 个答案:

答案 0 :(得分:2)

嘿,我得到了解决问题的方法

public class AppPreferences extends AppCompatActivity {

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

    setContentView(R.layout.activity_note_detail);

@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_note_detail); 问题在于这里的代码和所以我只使用 getSupportFragment(); 及其作品 getFragmentManager();

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

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


}

答案 1 :(得分:1)

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

PreferenceFragment未包含在片段兼容性集中,因此将PreferenceFragment更改为PreferenceFragmentCompat就足以满足您的个体需求。

检查this

希望有所帮助