2013-09-06 13 views
15

È possibile utilizzare ActionBarActivity insieme a PreferenceActivity. Fondamentalmente, io voglio usare il seguente codice:Utilizzo di PreferenceActivity e ActionBarActivity

getSupportActionBar().setDisplayHomeAsUpEnabled(true); // Enables the "back" arrow 

Il problema è PreferenceActivity non contiene il metodo getSupportActionBar() e ActionBarActivity non contiene metodi per la gestione e la visualizzazione delle preferenze.

+0

E 'possibile avere qualcosa simile. Controlla la mia soluzione qui: https://github.com/AndroidDeveloperLB/MaterialStuffLibrary –

risposta

7

Se siete disposti a trasformare il vostro PreferenceActivity in un PreferenceFragment c'è un'implementazione basata sul sostegno -v4 Frammento:

https://github.com/kolavar/android-support-v4-preferencefragment

Sto usando io stesso e funziona bene insieme a ActionBarActivity!

+0

puoi aggiungere qualche esempio di codice? L'ho scaricato, ho cambiato l'importazione da android.preference.PreferenceFragment in android.support.v4.preference.PreferenceFragment, e vedo che ha aggiunto alcune intestazioni nel mezzo dello schermo, ma non l'ActionBar in alto – Gavriel

+0

Non aggiunge il barra di azione è il lavoro dell'attività. Purtroppo non ho alcun samplecode a portata di mano, ma dovrebbe funzionare in modo simile a: http://developer.android.com/reference/android/preference/PreferenceFragment.html – Ostkontentitan

+0

Codice di esempio trovato in questa risposta SO: http://stackoverflow.com/ a/26460937/3221253 – AndyDeveloper

3

ActionBarCompat la funzione non è ancora supportata.

How to add Action Bar from support library into PreferenceActivity?

ActionBar stato aggiunto nel HoneyComb può utilizzare il seguente codice:

if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) 
    getActionBar().setDisplayHomeAsUpEnabled(true); 
+3

Dalla più recente libreria di supporto per Android 5.0 questo non funziona più. Quando si abilitano i temi materiale, non ci sarà alcun ActionBar e getActionBar() restituirà sempre null, quindi ci sarà una NullPointerException. – Zordid

+0

Esattamente, e mi fa incazzare! –

2

Per alcune persone si desidera utilizzare getSupportActionBar() con PreferenceActivity. Compilato con Android 6

dichiarare questo nella tua classe estende PreferenceActivity

private AppCompatDelegate mDelegate; 

e aggiungi a:

private AppCompatDelegate getDelegate() { 
    if (mDelegate == null) { 
    mDelegate = AppCompatDelegate.create(this, null); 
    } 
    return mDelegate; 
} 

e chiamare l'ActionBar:

android.support.v7.app.ActionBar actionBar = getDelegate().getSupportActionBar(); 
+0

funziona! eccellente – Belial09

Problemi correlati