具有 PreferenceFragment 的 ViewPager

直到最近,使用 android.support.v4.app.FragmentPagerAdapter 會阻止使用 PreferenceFragment 作為 FragmentPagerAdapter 中使用的片段之一。

支援 v7 庫的最新版本現在包括 PreferenceFragmentCompat 類,它將與 ViewPager 和 v4 版本的 FragmentPagerAdapter 一起使用。

擴充套件 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) { 
 
    } 
}

你現在可以在 android.support.v4.app.FragmentPagerAdapter 子類中使用此 Fragment:

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;
        }
    }
    
    // .......

}