Android 使用ActionBar Sherlock的首选项屏幕

Android 使用ActionBar Sherlock的首选项屏幕,android,preferences,actionbarsherlock,Android,Preferences,Actionbarsherlock,我正在用ActionBarSherlock做一个Android应用程序。 我的问题是如何制作偏好屏幕。不会调用SherlockPreferenceActivity类上的onBuildHeader()方法 这是我的密码 preference_headers.xml <preference-headers xmlns:android="http://schemas.android.com/apk/res/android" > <header android:fragment

我正在用ActionBarSherlock做一个Android应用程序。 我的问题是如何制作偏好屏幕。不会调用
SherlockPreferenceActivity
类上的
onBuildHeader()
方法

这是我的密码

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>
只有在API级别11或更高级别上运行时,才会调用onBuildHeaders()。参见github.com/commons-guy/cw-omnibus/tree/master/Prefs/FragmentsBC,了解支持API级别11+上的PreferenceFragment和旧版本Android上的经典首选项的示例。
-通用软件2012年6月7日11:06

@Commonware能否请您在回答时发布此内容,以便我可以删除此答案副本。

onBuildHeaders()
仅当您在API级别11或更高级别上运行时才会被调用。在较旧的设备上,您又回到了经典的
addPreferencesFromResource()
方法

有关在API Level 11+上支持
PreferenceFragment
和在旧版本Android上支持经典首选项的示例,请参见

具体而言,其
SherlockFragmentActivity
看起来如下:

package com.commonsware.android.preffragsbc;

import java.util.List;
import android.os.Build;
import android.os.Bundle;
import com.actionbarsherlock.app.SherlockPreferenceActivity;

public class EditPreferences extends SherlockPreferenceActivity {
  @SuppressWarnings("deprecation")
  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    if (Build.VERSION.SDK_INT<Build.VERSION_CODES.HONEYCOMB) {
      addPreferencesFromResource(R.xml.preferences);
      addPreferencesFromResource(R.xml.preferences2);
    }
  }

  @Override
  public void onBuildHeaders(List<Header> target) {
    loadHeadersFromResource(R.xml.preference_headers, target);
  }
}
package com.commonware.android.preffragsbc;
导入java.util.List;
导入android.os.Build;
导入android.os.Bundle;
导入com.actionbarsherlock.app.SherlockPreferenceActivity;
公共类EditPreferences扩展了SherlockPreferenceActivity{
@抑制警告(“弃用”)
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
if(Build.VERSION.SDK_INT
onBuildHeaders()
仅在API级别11或更高版本上运行时才会被调用。有关在API级别11+上支持
PreferenceFragment
和在旧版本Android上支持经典首选项的示例,请参阅。
public class MyPreferenceActivity extends SherlockPreferenceActivity {


    @Override
    public void onBuildHeaders(List<Header> target) {
        super.onBuildHeaders(target);

        loadHeadersFromResource(R.xml.preference_headers, target);
    }

}
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

    }


}
package com.commonsware.android.preffragsbc;

import java.util.List;
import android.os.Build;
import android.os.Bundle;
import com.actionbarsherlock.app.SherlockPreferenceActivity;

public class EditPreferences extends SherlockPreferenceActivity {
  @SuppressWarnings("deprecation")
  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    if (Build.VERSION.SDK_INT<Build.VERSION_CODES.HONEYCOMB) {
      addPreferencesFromResource(R.xml.preferences);
      addPreferencesFromResource(R.xml.preferences2);
    }
  }

  @Override
  public void onBuildHeaders(List<Header> target) {
    loadHeadersFromResource(R.xml.preference_headers, target);
  }
}