Android 高手進階教程:[7]Preferences

大家好,我們這一節講的是 Android Preferences 的學習,Preferences

在 Android 當中被用來記錄應用,以及用戶喜好等等,它可以用來保存

簡單的數據類型,如 Int,Double,Boolean 等。Preferences 中保存的數據

可以理解為 Map 型。我們通過 PreferenceManager 以及

getDefaultSharedPreferences(Context) 來獲取它,比如當我們想獲得整數我

們可以用 getInt(String key, int defVal) .獲取裡面的某個鍵值,當我們想

修改時候我們用 putInt(String key, int newVal), 最後用 edit(), 方法提

交!千萬不要忘記了哦~

為了讓大家跟好的理解我做了一個簡單的 Demo,程序主要有個 TextView 控制項,

上面寫著用戶使用改應用的次數。效果如下圖所示:

下面是實現Demo的大體步驟:

新建一個Android工程命名為:PreferencesDemo

在修改main.xml布局文件,這裡只是在TextView控制項里加了一個id.代碼如

下:

view plaincopy to clipboardprint?

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

<LinearLayout

xmlns:android="http://schemas.android.com/apk/res/android"

android:orientation="vertical"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

>

<TextView

android:id="@+id/text"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:text="@string/hello"

/>

</LinearLayout>

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

<LinearLayout

xmlns:android="http://schemas.android.com/apk/res/android"

android:orientation="vertical"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

>

<TextView

android:id="@+id/text"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:text="@string/hello"

/>

</LinearLayout>

修改PreferenceDemo.java的代碼,全部代碼如下:

view plaincopy to clipboardprint?

package com.android.tutor;

import android.app.Activity;

import android.content.SharedPreferences;

import android.os.Bundle;

import android.preference.PreferenceManager;

import android.widget.TextView;

public class PreferencesDemo extends Activity {

/** Called when the activity is first created. */

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

SharedPreferences mPerferences = PreferenceManager

.getDefaultSharedPreferences(this);

int counter = mPerferences.getInt("counter", 0);

TextView mTextView = (TextView)findViewById(R.id.text);

mTextView.setText("This app has been started " + counter + "

times.");

SharedPreferences.Editor mEditor = mPerferences.edit();

mEditor.putInt("counter", ++counter);

mEditor.commit();

}

}

package com.android.tutor;

import android.app.Activity;

import android.content.SharedPreferences;

import android.os.Bundle;

import android.preference.PreferenceManager;

import android.widget.TextView;

public class PreferencesDemo extends Activity {

/** Called when the activity is first created. */

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

SharedPreferences mPerferences = PreferenceManager

.getDefaultSharedPreferences(this);

int counter = mPerferences.getInt("counter", 0);

TextView mTextView = (TextView)findViewById(R.id.text);

mTextView.setText("This app has been started " + counter + "

times.");

SharedPreferences.Editor mEditor = mPerferences.edit();

mEditor.putInt("counter", ++counter);

mEditor.commit();

}

}

運行代碼,實現上述效果.

查看Preferences文件,首先打開命令終端:adb shell一下,然後cd data/data

進入該目錄,ls一下我們會發現一大堆包文件,入下圖所示:

cd com.android.tutor (這裡是我程序的包名) /shared_prefs,ls 一下會發

現.xml 文件如下圖:

打開.xml 文件,格式如下(為什麼這樣大家自己去理解):

view plaincopy to clipboardprint?

<?xml version='1.0' encoding='utf-8' standalone='yes' ?>

<map>

<int name="counter" value="3" />

</map>

本文內容整理自網絡, 文中所有觀點看法不代表淘大白的立場