public class MainActivity extends PreferenceActivity {
//不需要重写onCreate(),只需要重写该方法即可
public void onBuildHeaders(List<Header> target) {
loadHeadersFromResource(R.xml.header_test, target);
}
} 由于header是3.0以后引起来的,如果在3.0以前使用想使用类于header,可以按以下方法进行。具体思路为:
利用Preference和intent元素模拟header效果。示例如下:
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" >
<Preference
android:summary="Header1Summary"
android:title="Header1Title" >
<intent
android:action="one"
android:targetClass="com.baigle.customview.MainActivity"
android:targetPackage="com.baigle.customview" />
</Preference>
<Preference
android:summary="Header2Summary"
android:title="Header2Title" >
<intent
android:action="two"
android:targetClass="com.baigle.customview.MainActivity"
android:targetPackage="com.baigle.customview" />
</Preference>
</PreferenceScreen> 这里面的intent元素始终指向同一个activity,只是每一次传递的action不同,这是为了在activity加载不同的preference XML,与<extra>中的value不同是同一个目的。
承载的activity
public class MainActivity extends PreferenceActivity {
private final String ACTION_ONE = "one";
private final String ACTION_TWO = "two";
@SuppressWarnings("deprecation")
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
System.out.println("oncreate。。。。");
String action = getIntent().getAction();
if (ACTION_ONE.equalsIgnoreCase(action)) {
addPreferencesFromResource(R.xml.preference_one);
} else if (ACTION_TWO.equalsIgnoreCase(action)) {
addPreferencesFromResource(R.xml.preference_two);
} else if (Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB) {
addPreferencesFromResource(R.xml.header_legacy);
}
}
@SuppressLint("NewApi")
public void onBuildHeaders(List<Header> target) {
loadHeadersFromResource(R.xml.header_test, target);
}
} 与不兼容之前相比,重写了onCreate(),并在onCreate()中根据action和版本号加载不同的XML文件。同时也重写了onBuildHeaders()。
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/ruanjian/article-49638-5.html
跑到浙江这些粗制滥造的工厂去