Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Can't get the PreferenceFragment to work (Compiling error)

enter image description here

I am getting error when i try to compile my project: "The method add(int, Fragment) in the type FragmentTransaction is not applicable for the arguments (int, FragmentPreferences)". As far as i know, the PreferenceFragment is a Fragment? I am developing for android 4.0 but i have to use android-support-v4 library because my project incluedes also ViewPager. I found this example at 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();

But i can't get it to work.

My code:

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

FragmentPreferences:

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

}
like image 368
user1888162 Avatar asked Feb 25 '13 22:02

user1888162


2 Answers

That's because PreferenceFragment extends android.app.Fragment, rather than the android.support.v4.app.Fragment that the android.support.v4.app.FragmentTransaction is expecting.

As of yet, there is no official backport of the PreferenceFragment to the support library. However, you can use libraries such as UnifiedPreferences to fill this gap.

like image 137
ianhanniballake Avatar answered Nov 18 '22 11:11

ianhanniballake


Check the import statements at the top of your code. Likely one of the classes you are using is from support while the other is not.

like image 34
Oleg Vaskevich Avatar answered Nov 18 '22 12:11

Oleg Vaskevich