您的位置:首页 > Web前端

使用SharedPreferences读取系统设置参数

2013-07-02 20:09 211 查看

前面在LauncherActivity、PreferenceActivity、ExpandableListActivity的综合运用一文中简要介绍了PreferenceActivity的使用,本文接着使用Preference进行参数设置,并使用SharedPreferences读取保存后的数据,代码如下:

MainActivity:

package com.lovo;

import android.app.Activity;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;

public class PreferencesTestActivity extends Activity {
	// 声明SharedPreferences 对象
	private SharedPreferences sp;
	private TextView show;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_preferences_test);
		show = (TextView) findViewById(R.id.activity_preferences_test_tv_show);
		// 获得只能被本应用程序读、写的SharedPreferences对象
		sp = this.getSharedPreferences("com.lovo_preferences", MODE_PRIVATE);
	}

	public void click(View view) {
		switch (view.getId()) {
		case R.id.activity_preferences_test_btn_set:
			Intent intent = new Intent(PreferencesTestActivity.this,
					SetPreferencesActivity.class);
			startActivityForResult(intent, 0);
		}

	}

	@Override
	protected void onActivityResult(int requestCode, int resultCode, Intent data) {
		super.onActivityResult(requestCode, resultCode, data);
		// 根据键读取值
		String ring = sp.getString("ring", null);
		String name = sp.getString("name", null);
		String sex = sp.getString("sex", null);
		boolean systemSet = sp.getBoolean("systemSet", false);
		String str = (systemSet == true) ? "开启" : "关闭";
		show.setText("铃声为:" + ring + "\n" + "用户名为:" + name + "\n" + "性别为:"
				+ sex + "\n" + "自动保存进度:" + str + "\n");

	}
}

布局XML:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <Button
        android:id="@+id/activity_preferences_test_btn_set"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="click"
        android:text="设置" />

    <TextView
        android:id="@+id/activity_preferences_test_tv_show"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

</LinearLayout>

PreferencesActivity:

package com.lovo.activity;

import com.lovo.lesson13.R;

import android.os.Bundle;
import android.preference.PreferenceActivity;

public class SetPreferencesActivity extends PreferenceActivity{
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		addPreferencesFromResource(R.xml.test_pref_main);
	}
}

PreferencesXML(test_pref_main):

<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" >

    <!--
	铃声设置 
	android:key="ring_key" - 设置保存信息的键
	android:ringtoneType="all" - 铃声类型,可选值有电话铃声、警告音、通知音
	android:showDefault="false" - 是否显示默认铃声
	android:showSilent="false" - 是否显示静音选项
	android:title="设置铃声" - 显示在设置中的标题
	android:summary="选择铃声(test)" - 显示在标题下的概要信息
    -->
    <RingtonePreference
        android:key="ring"
        android:ringtoneType="all"
        android:showDefault="true"
        android:showSilent="true"
        android:summary="设置铃声(test)"
        android:title="设置铃声" />
    <!-- 分组标题 -->
    <PreferenceCategory android:title="个人信息设置" >

        <!--
       	 可编辑选项
        android:dialogTitle="你输入的用户名为:" - 弹出窗口上的标题
        -->
        <EditTextPreference
            android:dialogTitle="请输入用户名"
            android:key="name"
            android:summary="这里是输入用户名的选项"
            android:title="用户名" />
        <!--单选列表
        android:entries="@array/sexAry" - 显示在列表上的名称
        android:entryValues="@array/sexValueAry" - 保存的值
        -->
        <ListPreference
            android:dialogTitle="请输入性别"
            android:entries="@array/sexAry"
            android:entryValues="@array/sexValueAry"
            android:key="sex"
            android:summary="这里是输入性别的选项"
            android:title="性别" >
        </ListPreference>
    </PreferenceCategory>
    
    <PreferenceCategory android:title="系统功能组" >
        <!-- 复选框设置
        android:defaultValue="true" - 是否默认选中
        android:summaryOff="自动关闭 " - 没选中时的显示信息
        android:summaryOn="自动开启" - 选中时的显示信息
        -->

        <CheckBoxPreference
            android:defaultValue="true"
            android:key="systemSet"
            android:summaryOff="自动关闭 "
            android:summaryOn="自动开启"
            android:title="自动保存进度" >
        </CheckBoxPreference>
    </PreferenceCategory>

</PreferenceScreen>

数组XML:

<?xml version="1.0" encoding="utf-8"?>
<resources>

    <string-array name="sexAry">
        <item>男</item>
        <item>女</item>
    </string-array>
    <string-array name="sexValueAry">
        <item>male</item>
        <item>female</item>
    </string-array>

</resources>


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: