2013-01-07 43 views
12

Tôi có một PreferenceScreen hai mức:Hiển thị/nút quay lại trên PreferenceScreen lồng nhau android?

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

Vấn đề của tôi là màn hình thứ hai không hiển thị phía sau/lên nút trên thanh hành động tự động. Tôi làm cách nào để nút xuất hiện trên adv_settings?

+1

Tôi nghĩ rằng đây có thể đã được trả lời ở đây: http://stackoverflow.com/questions/4970605/return-from-nested-android-preferencescreen-to-previous-preferencescreen – ThePerson

+0

câu hỏi đó là về automati cally trở lại onclick, tôi chỉ muốn hiển thị "nút quay lại" vì vậy nó không nên khó khăn như vậy – lisovaccaro

+2

Hey, điều này có thể là những gì bạn đang tìm kiếm? http://stackoverflow.com/questions/16374820/action-bar-home-button-not-functional-with-nested-preferencescreen – jimmithy

Trả lời

6

Bạn có thể thêm mũi tên bằng cách viết kiểu ActionBar tùy chỉnh được sử dụng với chủ đề ứng dụng của bạn.

res/values-v11/styles.xml: (hoặc thêm chúng vào styles.xml hiện tại của bạn)

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

Sau đó, áp dụng chủ đề này trong AndroidManifest.xml của bạn:

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


Lưu ý: Cách rõ ràng để thêm mũi tên này phải gọi là:

getActionBar().setDisplayHomeAsUpEnabled(true); 

khi màn hình thứ hai đã được nạp, nhưng tôi nghĩ rằng có một lỗi Android nơi getActionBar() luôn trả về đối tượng ActionBar đầu tiên tầng, như trái ngược với một trong đó là hiện hữu, vì vậy thiết lập vào mũi tên tự động thất bại .

+3

Nó thêm các mũi tên nhưng không có gì xảy ra khi nhấp chuột ngay cả khi bạn đã xác định sự kiện trong PreferenceActivity –

2

Điều này có thể hiệu quả hơn, nhưng bạn có thể tạo hai tệp PreferenceAtivity mỗi tệp bằng cách sử dụng PreferenceFragment của riêng chúng. Mỗi PreferenceFragment sẽ có XML PreferenceScreen riêng của nó (màn hình mức đầu tiên và màn hình mức thứ hai). Từ màn hình mức đầu tiên, bạn khởi chạy PreferenceActivity thứ hai với Intent trong thẻ. Trong PreferenceActivity thứ hai bạn có thể thiết lập các biểu tượng nhà bằng cách làm này:

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

và sau đó cũng đã có một handler cho các nút home:

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

    return false; 
} 

Tài sản:

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

SecondPreferenceActivty 
SecondPreferenceFragment 
pref_second.xml (layout with PreferenceScreen and Prefernce nodes) 
Các vấn đề liên quan