2013-01-07 11 views
12

Mam PreferenceScreen dwupoziomowa:Przycisk Show up/back na zagnieżdżonym PreferenceScreen w systemie Android?

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

Moim problemem jest to, że drugi ekran nie pojawi się automatycznie tylną przycisk/aż na pasku akcji. Jak ustawić przycisk "up" na adv_settings?

+1

myślę, że to może już być odebrane tutaj: http://stackoverflow.com/questions/4970605/return-od-nested-android-preferencescreen-to-previous-preferencescreen – ThePerson

+0

to pytanie dotyczy automatów cally wraca z powrotem, chcę tylko pokazać "przycisk powrotu", więc nie powinno być tak trudno – lisovaccaro

+2

Hej, to może być to, czego szukasz? http://stackoverflow.com/questions/16374820/action-bar-home-button-not-functional-with-nested-preferencescreen – jimmithy

Odpowiedz

6

Możesz dodać strzałkę, pisząc niestandardowy styl Actionbar, który będzie używany z kompozycją aplikacji.

res/wartości-v11/styles.xml: (lub dodać je do istniejącego styles.xml)

<?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> 

Następnie zastosować ten temat w AndroidManifest.xml:

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


Uwaga: Oczywistym sposobem dodania tej strzałki powinno być wywołanie:

getActionBar().setDisplayHomeAsUpEnabled(true); 

raz drugi ekran został załadowany, ale myślę, że jest Android bug gdzie getActionBar() zawsze zwraca ActionBar obiektu pierwszego rzędu, w przeciwieństwie do tego, który jest obecnie widoczny, więc ustawienie strzałki dynamicznie zawiedzie .

+3

Dodaje strzałki, ale nic się nie dzieje po kliknięciu, nawet jeśli zdefiniowałeś zdarzenie w PreferenceActivity –

2

Może to być więcej pracy, ale można utworzyć dwa pliki PreferenceAtivity, każdy z własnym PreferenceFragment. Każdy PreferenceFragment będzie miał swój własny XML PreferenceScreen (ekran pierwszego poziomu i drugi ekran poziomu). Na ekranie pierwszego poziomu uruchamiasz drugą PreferenceActivity z intencją w tagu. W drugim PreferenceActivity można ustawić ikonę domu w ten sposób:

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

a następnie miał również obsługi dla przycisku domu:

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

    return false; 
} 

aktywa:

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

SecondPreferenceActivty 
SecondPreferenceFragment 
pref_second.xml (layout with PreferenceScreen and Prefernce nodes) 
Powiązane problemy