編輯:關於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;
}
}
具體我的邏輯代碼在上一篇博文有,有問題歡迎交流,謝謝各位!!!
Android JNI的第一步——從HelloWorld開始
第一步:配置NDK運行環境 兩個工具包: com.android.ide.eclipse.ndk_23.0.2.1259578.jar android-ndk-r10(當
淺談Android app開發中Fragment的Transaction操作
在Android中,對Fragment的操作都是通過FragmentTransaction來執行。而從Fragment的結果來看,FragmentTransaction中
Android中的Handler
當我們在處理下載或是其他需要長時間執行的任務時,如果直接把處理函數放在Activity的OnCreate或是OnStart中,會導致執行過程中整個Activity無響
android利用zbar二維碼掃描-(解決中文亂碼及掃描區域定義)
寫在最前(這是對上一篇博文的問題做的更新【android利用zbar二維碼掃描】) 前天早上登陸CSDN時候一條消息:一網友提出了兩點疑惑 &