Les préférences de l'écran à l'aide de Sherlock ActionBar
Je suis en train de faire une application Android à l'aide de ActionBarSherlock
.
Mon problème est que pour faire des préférences de l'écran. Le onBuildHeader()
méthode sur la SherlockPreferenceActivity
classe est jamais appelé.
C'est mon code
preference_headers.xml
<preference-headers xmlns:android="http://schemas.android.com/apk/res/android" >
<header
android:fragment="package.fragments.MyPreferenceFragment"
android:icon="@drawable/bulle"
android:summary="An example of some preferences."
android:title="title" />
</preference-headers>
preferences.xml
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
android:title="@string/options" >
<PreferenceCategory>
<SwitchPreference
android:id="@+id/cb_notif"
android:defaultValue="false"
android:key="com.vincent.HTC_Dev.pref.notif"
android:summaryOff="@string/notifications_off"
android:summaryOn="@string/notifications_on"
android:title="@string/notifications" />
</PreferenceCategory>
</PreferenceScreen>
MyPreferenceActivity
public class MyPreferenceActivity extends SherlockPreferenceActivity {
@Override
public void onBuildHeaders(List<Header> target) {
super.onBuildHeaders(target);
loadHeadersFromResource(R.xml.preference_headers, target);
}
}
MyPreferenceFragment
public class MyPreferenceFragment extends PreferenceFragment implements OnSharedPreferenceChangeListener {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.preferences);
getPreferenceScreen().getSharedPreferences().registerOnSharedPreferenceChangeListener(this);
}
@Override
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences,
String key) {
//TODO Auto-generated method stub
}
}
onBuildHeaders()
sera appelée uniquement si vous êtes en cours d'exécution sur l'API de Niveau 11 ou plus. Voir github.com/commonsguy/cw-omnibus/tree/master/Prefs/FragmentsBC pour un exemple de soutienPreferenceFragment
sur l'API de Niveau 11+ et classique préférences sur les anciennes versions d'Android.
InformationsquelleAutor Vincent Milane Danzinpré | 2012-06-07
Vous devez vous connecter pour publier un commentaire.
onBuildHeaders()
sera appelée uniquement si vous êtes en cours d'exécution sur l'API de Niveau 11 ou plus. Sur les appareils plus anciens, vous êtes de retour à la classiqueaddPreferencesFromResource()
approche.Voir cet exemple de projet pour un exemple de soutien
PreferenceFragment
sur l'API de Niveau 11+ et classique préférences sur les anciennes versions d'Android.Plus précisément, son
SherlockFragmentActivity
ressemble:Dans
onCreate()
nous avons besoin de seulement neaddPreferencesFromResource()
si nous sommes sur un appareil plus ancien. Dans ce cas, mon échantillon a deux de préférence en-têtes, et, par conséquent, deux de préférence des fichiers XML, de sorte que nous appelonsaddPreferencesFromResource()
sur les deux. Sur les appareils récents,onCreate()
ne fait rien, mais la chaîne de la super-classe, ce qui va déclencher l'appel àonBuildHeaders()
.@CommonsWare pouvez-vous s'il vous plaît poster ce que vous, ce que je peux supprimer cette copie de votre réponse.