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);
}
}
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.
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With