2013-09-06 3 views
15

Có thể sử dụng ActionBarActivity kết hợp với PreferenceActivity. Về cơ bản, tôi muốn sử dụng đoạn mã sau:Sử dụng PreferenceActivity và ActionBarActivity

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

Vấn đề là PreferenceActivity không chứa phương pháp getSupportActionBar() và ActionBarActivity không chứa bất kỳ phương pháp để quản lý và hiển thị sở thích.

+0

Có thể có một cái gì đó giống. Kiểm tra giải pháp của tôi ở đây: https://github.com/AndroidDeveloperLB/MaterialStuffLibrary –

Trả lời

7

Nếu bạn sẵn sàng để biến PreferenceActivity của bạn thành một PreferenceFragment có một thực hiện dựa trên hỗ trợ -v4 Fragment:

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

Tôi tự sử dụng nó và nó hoạt động tốt khi kết hợp với ActionBarActivity!

+0

bạn có thể thêm một số ví dụ về mã không? Tôi đã tải xuống, thay đổi việc nhập từ android.preference.PreferenceFragment thành android.support.v4.preference.PreferenceFragment và tôi thấy nó đã thêm một số tiêu đề ở giữa màn hình, nhưng không phải là ActionBar trên đầu trang – Gavriel

+0

Nó không thêm actionbar đó là công việc của hoạt động. Không may là tôi không có mẫu mã nào trong tầm tay nhưng nó sẽ hoạt động tương tự như: http://developer.android.com/reference/android/preference/PreferenceFragment.html – Ostkontentitan

+0

Tìm mã mẫu trong câu trả lời SO này: http://stackoverflow.com/ a) 26460937/3221253 – AndyDeveloper

3

ActionBarCompat tính năng chưa được hỗ trợ.

How to add Action Bar from support library into PreferenceActivity?

ActionBar được thêm vào trong tổ ong có thể sử dụng đoạn mã sau:

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

Từ thư viện hỗ trợ mới nhất cho Android 5.0, tính năng này không còn hoạt động nữa. Khi bạn bật Material Themes, sẽ không có ActionBar và getActionBar() sẽ luôn trả về null, do đó sẽ có một NullPointerException. – Zordid

+0

Chính xác, và nó làm tôi bực mình! –

2

Đối với một số người muốn sử dụng getSupportActionBar() với PreferenceActivity. Biên soạn với Android 6

Declare này trong lớp học của bạn kéo dài PreferenceActivity

private AppCompatDelegate mDelegate; 

Và thêm này:

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

Và gọi actionbar của bạn:

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

hoạt động! Xuất sắc – Belial09