python preference界面设置_Android的设置界面及Preference使用

一般来说,我们的APP都会有自己的设置页面,那么其实我们有非常简单的制作方法。老样子,先看效果图。

932266-20180727005941358-1255078226.gif

然后就是看源代码了。

第一步,先在res文件夹中新建一个xml文件夹,用来存放preferences.xml文件

932266-20180727010255858-675912079.png

<?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啦

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值