Android之设置页面(PreferenceActivity使用)

转载请标明出处:
http://blog.csdn.net/zq2114522/article/details/50557811
本文出自:【梁大盛的博客】

Android之设置页面(PreferenceActivity使用)

引:没仔细看Setting之前也接触过PreferenceActivity.之前还是停留在PreferenceActivity仅仅封装了SharedPreferences的层面上.事实上PreferenceActivity早在API 1就引入并且很多时候用来设计设置页面.原生Android Setting程序就是这样干的.使用PreferenceActivity作为设置页面可以省略界面的设计,用各种Preference的子类实现界面,如CheckBoxPreference, EditTextPreference, ListPreference, MultiSelectListPreference, PreferenceCategory, PreferenceScreen, SwitchPreference等.编辑一个xml文件即可以完成界面的设计.然后提供形形色色的回调接口.当设置给修改以后会自动保存相应的SharedPreferences并且回调已经设置的回调函数.

首先贴出Demo效果图和代码.

这里写图片描述

MainActivity.java

package com.example.dsliang.preferenceactivitydemo;

import android.app.FragmentTransaction;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;

public class MainActivity extends AppCompatActivity {
   

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        FragmentTransaction fragmentTransaction = getFragmentManager().beginTransaction();
        fragmentTransaction.replace(android.R.id.content, new PreferenceFagment());
        fragmentTransaction.commit();
    }

}
package com.example.dsliang.preferenceactivitydemo;

import android.app.Activity;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.preference.PreferenceFragment;
import android.widget.Toast;

/**
 * Created by dsliang on 2016/1/21.
 */
public class PreferenceFagment extends PreferenceFragment {
   

    SharedPreferences.OnSharedPreferenceChangeListener mChangeListener;
    Activity mActivity;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        mActivity = getActivity();
        mChangeListener = new SharedPreferences.OnSharedPreferenceChangeListener() {
            @Override
            public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
                if ("setting_wifi".equals(key) || "setting_bluetouh".equals(key) || "charge_lock_screen".equals(key) || "never_sleep".equals(key)) {
                    Toast.makeText(mActivity, key + " : change to " + sharedPreferences.getBoolean(key, true), Toast.LENGTH_SHORT).show();
                }else if("setting_timezone".equals(key))
                {
                    findPreference("setting_timezone").setSummary(sharedPreferences.getString(key,"GMY - 02:00"));
                }
            }
        };

        addPreferencesFromResource(R.xml.preferences);
    }

    @Override
    public void onResume() {
        super.onResume();

        getPreferenceScreen().getSharedPreferences().registerOnSharedPreferenceChangeListener(mChangeListener);
    }


    @Override
    
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值