2013-01-07 13 views
12

Ho un PREFERENCE due livelli:Mostra pulsante su/indietro su Android nested PreferenceScreen?

<PreferenceScreen> 
general settings 
    <PreferenceScreen android:key="adv_settings"> 
    more advanced settings 
    </PreferenceScreen> 
</PreferenceScreen> 

Il mio problema è che il secondo schermo non mostra automaticamente il/sul tasto indietro sulla barra delle operazioni. Come faccio apparire il pulsante su su adv_settings?

+1

Penso che questo potrebbe già avere una risposta qui: http://stackoverflow.com/questions/4970605/return-from-nested-android-preferencescreen-to-previous-preferencencreen – ThePerson

+0

questa domanda riguarda gli automati tornando su onclick, voglio solo mostrare il "pulsante indietro", quindi non dovrebbe essere così difficile – lisovaccaro

+2

Ehi, questo potrebbe essere quello che stai cercando? http://stackoverflow.com/questions/16374820/action-bar-home-button-not-functional-with-nested-preferencescreen – jimmithy

risposta

6

È possibile aggiungere la freccia scrivendo uno stile ActionBar personalizzato da utilizzare con il tema dell'applicazione.

res/valori-V11/styles.xml: (o aggiungere questi alla vostra styles.xml esistente)

<?xml version="1.0" encoding="utf-8"?> 
<resources>  
    <style name="MyTheme" parent="@android:style/Theme.Holo.Light"> 
    <item name="android:actionBarStyle">@style/MyActionBar</item> 
    </style> 

    <style name="MyActionBar" parent="@android:style/Widget.Holo.ActionBar"> 
    <item name="android:displayOptions">showHome|homeAsUp|showTitle</item> 
    </style> 
</resources> 

quindi applicare questo tema nel AndroidManifest.xml:

<application android:theme="@style/MyTheme"> 


Nota: Il modo ovvio per aggiungere questa freccia deve essere chiamare:

getActionBar().setDisplayHomeAsUpEnabled(true); 

una volta che il secondo schermo è stato caricato, ma penso che ci sia un bug di Android dove getActionBar() restituisce sempre l'oggetto ActionBar di primo livello, al contrario di quello che è attualmente visibile, in modo da impostare la freccia non riesce in modo dinamico .

+3

Aggiunge le frecce ma non accade nulla sul clic anche se l'evento è stato definito in PreferenceActivity –

2

Questo può essere più lavoro, ma è possibile creare due file PreferenceAtivity ciascuno con il proprio PreferenceFragment. Ogni PreferenceFragment avrà il proprio XML PreferenceScreen (lo schermo di primo livello e lo schermo di secondo livello). Dalla schermata del primo livello si avvia la seconda PreferenceActivity con Intent all'interno del tag. Nel secondo PreferenceActivity è possibile impostare l'icona di casa in questo modo:

ActionBar bar = getActionBar(); 
bar.setDisplayHomeAsUpEnabled(true); 

e poi ha avuto anche un gestore per il tasto home:

@Override 
public boolean onOptionsItemSelected(MenuItem item) 
{ 
    if (item.getItemId() == android.R.id.home) { 
     finish(); 
    } 

    return false; 
} 

Attività:

FirstPreferenceActivty 
FirstPreferenceFragment 
pref_first.xml (layout with PreferenceScreen and Prefernce nodes) 

SecondPreferenceActivty 
SecondPreferenceFragment 
pref_second.xml (layout with PreferenceScreen and Prefernce nodes) 
Problemi correlati