0

Я изо всех сил пытался реализовать PreferenceFragment в своем приложении. Моя цель состоит в том, чтобы иметь предпочтения просмотра заменить мой main_activity фрагмент контейнера, так что я могу сохранить тот же нав ящик, панель действий и т.д.Реализация PreferenceFragment?

Я создал класс Fragment Preference так:

public class MadlibsSettings extends PreferenceFragment { 

android.support.v7.app.ActionBar actionBar; 
CheckBoxPreference themeSwitch; 
ListPreference fontSize; 


@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    View view = super.onCreateView(inflater, container, savedInstanceState); 
    view.setBackgroundColor(getResources().getColor(android.R.color.white)); 

    actionBar = (android.support.v7.app.ActionBar) ((MainActivity)getActivity()).getSupportActionBar(); 
    actionBar.setTitle("Settings"); 

    addPreferencesFromResource(R.layout.madlibs_settings); 

    //fontSize = (ListPreference) findPreference("list"); 

    return view; 
} 
} 

И мой префы в R.layout.madlibs_settings являются:

<PreferenceCategory android:title="PreferenceCategory A" > 
    <CheckBoxPreference 
     android:id="@+id/checkbox1" 
     android:defaultValue="false" 
     android:key="checkbox1" 
     android:summary="Switches App Layout to Dark Theme" 
     android:title="Darker Theme" /> 
</PreferenceCategory> 
<PreferenceCategory android:title="PreferenceCategory B" > 
    <ListPreference 
     android:id="@+id/ListPreference" 
     android:defaultValue="8" 
     android:entries="@array/list" 
     android:entryValues="@array/LValues" 
     android:key="list" 
     android:summary="Choose Font Size" 
     android:title="Font Size" /> 
</PreferenceCategory> 

</PreferenceScreen> 

Я не совсем уверен, что делать в моей основной деятельности в Орде er, чтобы раздуть настройки, а затем получить доступ к данным из моих prefs usings haredpreferences. Любая помощь будет отличной, я определенно новичок с фрагментами.

ответ

2

Поскольку preferenceFragment является фактическим фрагментом, вы можете просто обменивать его, используя FragmentTransation, как и с вашими другими фрагментами в вашем ящике Nav. В какой бы OnClick событие или иначе, использовать что-то вроде следующего, чтобы перейти к PreferenceFragment:

Источник: http://developer.android.com/guide/topics/ui/settings.html#Fragment

А затем для доступа к вашим предпочтениям из любого места, следующий код должен быть в состоянии получить Вас начал.

SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(getContext()); 
String val1 = settings.getString("KEY", "default_value"); 
settings.putString("key", "new_value"); 

Если вы решили сделать свой собственный файл настроек в дополнение к настройкам одного, то вы будете использовать:

SharedPreferences settings = getContext().getSharedPreferences("pref_file_name", 0); 
String val1 = settings.getString("KEY", "default_value"); 
settings.putString("KEY", "new_value"); 
+0

Отлично! Благодаря! – sanic