一般来说,我们的APP都会有自己的设置页面,那么其实我们有非常简单的制作方法。老样子,先看效果图。
然后就是看源代码了。
第一步,先在res文件夹中新建一个xml文件夹,用来存放preferences.xml文件
<?xml version="1.0" encoding="utf-8"?>
第二步,在string.xml文件中添加项数组
My Application
IT
Commerce
HR
001
002
003
第三步,让Activity继承PreferenceActivity(其实这种方式目前会提示过期,但是没关系),然后在重写onCreate方法,添加preferences.xml作为显示界面。
protected voidonCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);//setContentView(R.layout.activity_setting);
addPreferencesFromResource(R.xml.preferences);
}
做到这一步,其实已经可以运行并看到效果了。但那么我们要如何拿到这些数据呢?那么修改下 代码
protected voidonCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.preferences);
SharedPreferences sp= PreferenceManager.getDefaultSharedPreferences(this);boolean ON_OFF = sp.getBoolean("checkbox_preference", false);boolean next_screen = sp.getBoolean("next_screen_checkbox_preference", false);
String text= sp.getString("edittext_preference", "");
String listtext= sp.getString("list_preference", "");
Log.i("lenve", ON_OFF+"--"+next_screen+"--"+text+"--"+listtext);
}
可是有的时候我们如果希望更改后立马被系统获知选项已被更改,又该如何?复写继承了PreferenceActivity的类中的onPreferenceTreeClick方法,这个方法会在设置修改时触发。
@Overridepublic booleanonPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference) {
SharedPreferences sp=preference.getSharedPreferences();boolean ON_OFF = sp.getBoolean("checkbox_preference", false);
Log.i("lenve", ON_OFF+"");
String text= sp.getString("edittext_preference", "");
Log.i("lenve", text+"");
String listtext= sp.getString("list_preference", "");
Log.i("lenve", listtext+"");boolean next_screen = sp.getBoolean("next_screen_checkbox_preference", false);
Log.i("lenve", next_screen+"");return true;
}
好了,啰嗦到现在,我们直接看整个MainActivity的代码吧
packagecom.example.linfeng.myapplication;importandroid.content.SharedPreferences;importandroid.os.Bundle;importandroid.preference.Preference;importandroid.preference.PreferenceActivity;importandroid.preference.PreferenceManager;importandroid.preference.PreferenceScreen;importandroid.util.Log;public class MainActivity extendsPreferenceActivity {
@Overrideprotected voidonCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.preferences);
SharedPreferences sp= PreferenceManager.getDefaultSharedPreferences(this);boolean ON_OFF = sp.getBoolean("checkbox_preference", false);boolean next_screen = sp.getBoolean("next_screen_checkbox_preference", false);
String text= sp.getString("edittext_preference", "");
String listtext= sp.getString("list_preference", "");
Log.i("lenve", ON_OFF+"--"+next_screen+"--"+text+"--"+listtext);
}
@Overridepublic booleanonPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference) {
SharedPreferences sp=preference.getSharedPreferences();boolean ON_OFF = sp.getBoolean("checkbox_preference", false);
Log.i("lenve", ON_OFF+"");
String text= sp.getString("edittext_preference", "");
Log.i("lenve", text+"");
String listtext= sp.getString("list_preference", "");
Log.i("lenve", listtext+"");boolean next_screen = sp.getBoolean("next_screen_checkbox_preference", false);
Log.i("lenve", next_screen+"");return true;
}
}
就这么简单。OK啦