5

在此处输入图像描述

当我尝试编译我的项目时出现错误:“FragmentTransaction 类型中的方法 add(int, Fragment) 不适用于参数 (int, FragmentPreferences)”。据我所知,PreferenceFragment 是一个片段?我正在为 android 4.0 开发,但我必须使用 android-support-v4 库,因为我的项目还包括 ViewPager。我在http://developer.android.com/guide/topics/ui/settings.html#Fragment找到了这个例子:

// Display the fragment as the main content.
        getFragmentManager().beginTransaction()
                .replace(android.R.id.content, new SettingsFragment())
                .commit();

但我无法让它工作。

我的代码:

case R.id.menu_settings:
    FragmentPreferences prefs = new FragmentPreferences();
    FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
    ft.add(android.R.id.content, prefs);
    ft.commit();
    break;

片段偏好:

public class FragmentPreferences extends PreferenceFragment {
    @Override
    public void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        addPreferencesFromResource(R.xml.preferences);
    }

}
4

3 回答 3

16

那是因为PreferenceFragmentextends android.app.Fragment,而不是 theandroid.support.v4.app.Fragmentandroid.support.v4.app.FragmentTransaction期望的。

到目前为止,还没有PreferenceFragment支持库的官方反向移植。但是,您可以使用UnifiedPreferences等库来填补这一空白。

于 2013-02-25T22:51:10.313 回答
1

检查import代码顶部的语句。您正在使用的其中一个类可能来自support,而另一个则不是。

于 2013-02-25T22:49:22.417 回答
0

这是 PreferenceFragment 到支持库的非官方反向移植。上次更新是 2015 年 2 月,它与棒棒糖设备兼容。android-support-v4-preferencefragment

import android.support.v4.preference.PreferenceFragment;
于 2015-04-23T12:49:54.423 回答