Tôi đang thực hiện một ứng dụng Android sử dụng ActionBarSherlock
. Vấn đề của tôi là tạo màn hình tùy chọn. Phương thức onBuildHeader()
trên lớp SherlockPreferenceActivity
được gọi là nerver.Tùy chọn màn hình bằng cách sử dụng ActionBar Sherlock
Đây là mã của tôi
preference_headers.xml
<preference-headers xmlns:android="http://schemas.android.com/apk/res/android" >
<header
android:fragment="package.fragments.MyPreferenceFragment"
android:icon="@drawable/bulle"
android:summary="An example of some preferences."
android:title="title" />
</preference-headers>
preferences.xml
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
android:title="@string/options" >
<PreferenceCategory>
<SwitchPreference
android:id="@+id/cb_notif"
android:defaultValue="false"
android:key="com.vincent.HTC_Dev.pref.notif"
android:summaryOff="@string/notifications_off"
android:summaryOn="@string/notifications_on"
android:title="@string/notifications" />
</PreferenceCategory>
</PreferenceScreen>
MyPreferenceActivity
public class MyPreferenceActivity extends SherlockPreferenceActivity {
@Override
public void onBuildHeaders(List<Header> target) {
super.onBuildHeaders(target);
loadHeadersFromResource(R.xml.preference_headers, target);
}
}
MyPreferenceFragment
public class MyPreferenceFragment extends PreferenceFragment implements OnSharedPreferenceChangeListener {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.preferences);
getPreferenceScreen().getSharedPreferences().registerOnSharedPreferenceChangeListener(this);
}
@Override
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences,
String key) {
// TODO Auto-generated method stub
}
}
'onBuildHeaders()' sẽ chỉ được gọi nếu bạn đang chạy trên API cấp 11 trở lên. Xem https://github.com/commonsguy/cw-omnibus/tree/master/Prefs/FragmentsBC để biết ví dụ về hỗ trợ 'PreferenceFragment' trên API cấp 11+ và tùy chọn cổ điển trên các phiên bản Android cũ hơn. – CommonsWare
OK cảm ơn rất nhiều! –
@CommonsWare Bạn có thể biến nhận xét của mình thành câu trả lời không, bởi vì đây là câu hỏi "chưa được trả lời" được bỏ phiếu cao nhất – rds