Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android app系統設置界面 數據的保存與讀取 SharedPreferences 的正確使用

Android app系統設置界面 數據的保存與讀取 SharedPreferences 的正確使用

編輯:關於Android編程

很開心的是經歷過兩個多月的努力,項目在11月份即將要交付使用,基礎功能已經完成,剩下的是系統設定界面沒有開發完畢,如下圖:

\

很顯然要實現的功能是幾個界面要顯示很多數據,要依據某一項進行排序,當勾選的選項被選中時,菜單切換到該界面時,就要按照這個字段進行排序,所以需求是用戶點擊的字段,需要保存下來,當用戶退出程序,再次進入的時候,需要獲得已經保存的字段的值,也就是顯示打鉤的那項,解決方案如下:

第一個方案:腦子裡第一個冒出來的就是使用sqlite來保存數據,這樣每次進入應用的時候,重新從數據庫裡面獲取該字段的值,不過鑒於保存數據不多,都是一些string、int或者boolean類型,用數據庫有點大材小用,(關於sqlite的部分有興趣的同學可以參考別的文章,這裡就不多說了)。

 

第二個方案:是公司同事(我師傅),他在登陸界面為了記錄用戶的登陸狀態,采用了類似於windows裡的注冊表的功能來保存登陸狀態,Android的系統屬性相當於windows的注冊表,由key和value組成,且都是核心系統的一個基本機制。相對於windows的注冊表,Android的系統屬性要簡單一些,它沒有windows注冊表的樹狀結構,而只是一個列表,也就是說沒有父子關系。value有string,int,long,boolean,但是設置只能通過字符串方式。(這是從該博文截取出來的,有興趣的可以參考:android “注冊表”),這個方案其實和第三個方案,功能是類似的,只不過范圍更大,介紹第三個方案。

第三個方案也就是本博文提到的Sharepreferences,這個類實現的功能我的理解是:保存一個應用程序的基本類型變量,保存在該應用的xml文件下(data/data/包名/shared_prefs/),可以雙擊打開,就可以看到我們保存的變量,具體的sharepreferences的用法我就不多講了,有很多很好的博文:sharepreferences博文1,其實真的很好用,只要在我的應用中:當用戶點擊了某一個項,通過監聽textview點擊事件,更換帶鉤的背景圖片,存下shareperferences的變量,在用戶再次登錄的時候,然後獲取剛才保存的變量,只需要拿到該key,就可以拿到value,分享一個一位前輩提供的sharepreferences的工具類,不用再那麼麻煩的創建和保存了,再次感謝:

 

package client.verbank.mtp.allone.util;

import android.content.Context;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;

/**
 * SharedPreferences操作工具類
 * 
 */
public class SharepreferencesUtilSystemSettings {
	public final static String SETTING = Setting;

	public static void putValue(Context context, String key, int value) {
		Editor sp = context.getSharedPreferences(SETTING, Context.MODE_PRIVATE)
				.edit();
		sp.putInt(key, value);
		sp.commit();
	}

	public static void putValue(Context context, String key, boolean value) {
		Editor sp = context.getSharedPreferences(SETTING, Context.MODE_PRIVATE)
				.edit();
		sp.putBoolean(key, value);
		sp.commit();
	}

	public static void putValue(Context context, String key, String value) {
		Editor sp = context.getSharedPreferences(SETTING, Context.MODE_PRIVATE)
				.edit();
		sp.putString(key, value);
		sp.commit();
	}

	public static int getValue(Context context, String key, int defValue) {
		SharedPreferences sp = context.getSharedPreferences(SETTING,
				Context.MODE_PRIVATE);
		int value = sp.getInt(key, defValue);
		return value;
	}

	public static boolean getValue(Context context, String key, boolean defValue) {
		SharedPreferences sp = context.getSharedPreferences(SETTING,
				Context.MODE_PRIVATE);
		boolean value = sp.getBoolean(key, defValue);
		return value;
	}

	public static String getValue(Context context, String key, String defValue) {
		SharedPreferences sp = context.getSharedPreferences(SETTING,
				Context.MODE_PRIVATE);
		String value = sp.getString(key, defValue);
		return value;
	}
}
具體我的邏輯代碼在上一篇博文有,有問題歡迎交流,謝謝各位!!!

 

 

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved