Android ViewPager avec PreférenceFragment


Exemple

Jusqu'à récemment, l'utilisation de android.support.v4.app.FragmentPagerAdapter empêchait l'utilisation de PreferenceFragment comme l'un des fragments utilisés dans FragmentPagerAdapter.

Les dernières versions de la bibliothèque de support v7 incluent désormais la classe PreferenceFragmentCompat , qui fonctionnera avec un ViewPager et la version v4 de FragmentPagerAdapter.

Exemple de fragment qui étend PreferenceFragmentCompat :

import android.os.Bundle; 
import android.support.v7.preference.PreferenceFragmentCompat; 
import android.view.View; 
 
public class MySettingsPrefFragment extends PreferenceFragmentCompat { 
  
    public MySettingsPrefFragment() { 
        // Required empty public constructor 
    } 
 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
        super.onCreate(savedInstanceState); 
        addPreferencesFromResource(R.xml.fragment_settings_pref); 
    } 
 
    @Override 
    public void onCreatePreferences(Bundle bundle, String s) { 
 
    } 
}

Vous pouvez maintenant utiliser ce fragment dans une sous-classe android.support.v4.app.FragmentPagerAdapter :

private class PagerAdapterWithSettings extends FragmentPagerAdapter {

    public PagerAdapterWithSettings(FragmentManager supportFragmentManager) {
        super(supportFragmentManager);
    }

    @Override
    public Fragment getItem(int position) {
        switch(position) {
            case 0:
                return new FragmentOne();

            case 1:
                return new FragmentTwo();

            case 2:
                return new MySettingsPrefFragment();

            default:
                return null;
        }
    }
    
    // .......

}