總網頁瀏覽量

關於我自己

我的相片
人生的必修課是接受無常,人生的選修課是放下執著。
顯示具有 SharedPreferences 標籤的文章。 顯示所有文章
顯示具有 SharedPreferences 標籤的文章。 顯示所有文章

2015年3月9日 星期一

[Android] 建立Class定義共同參數 SharedPreferences

======================================================================================
public class Param
{
public void setSharedPreferences(String columns, String data, Context ctxs)
    {
       SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(ctxs);
       SharedPreferences.Editor editor = settings.edit();  
       editor.putString(columns, data);
       editor.commit();
    }

public String getSharedPreferences(String columns, Context ctxs)
    {
     String param="no";
     try{
           SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(ctxs);
           param=sp.getString(columns, param);
     }catch(Exception ex){}
       return param;
    }
}
==============================extends Fragment==============================
Activity mActivity;
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
mActivity = (Activity) activity;
}
@Override
public void onCreate(Bundle savedInstanceState) {
        Param pm = new Param();
        pm.setSharedPreferences("startDay", "20150402", mActivity);
        String startDay = pm.getSharedPreferences("startDay", mActivity);
}

==============================extends Activity==============================
@Override
public void onCreate(Bundle savedInstanceState) {
        Param pm = new Param();
        pm.setSharedPreferences("startDay", "20150402", this);
        String startDay = pm.getSharedPreferences("startDay", this);
}


2014年6月1日 星期日

[Android] 建立共用的SharedPreferences, Fragment也可以用

當有一些資料希望在離開AP, 下次再進來時依然能讀到這些資料, 又不想大費周章的寫database紀錄, 就可以使用SharedPreferences

在此是另外建立一個獨立的SharedPreferences, 讓其它class可以讀取








import android.content.Context;
import android.content.SharedPreferences;
import android.content.SharedPreferences.OnSharedPreferenceChangeListener;

public class SystemPreference {
    protected static SharedPreferences settings; 
    protected static SharedPreferences.Editor editor;
    protected static SharedPreferences settingsForStatus;
    protected static SharedPreferences.Editor editorForStatus;
    static int lastPosition;
 
    public static void registerForStatusOnSharedPreferenceChangeListener(OnSharedPreferenceChangeListener listener){
        if(settingsForStatus !=null){
            settingsForStatus.registerOnSharedPreferenceChangeListener(listener);
        }
    }
     
    public static void unregisterForStatusOnSharedPreferenceChangeListener(OnSharedPreferenceChangeListener listener){
        if(settingsForStatus !=null){
            settingsForStatus.unregisterOnSharedPreferenceChangeListener(listener);
        }
    }
    public static void registerOnSharedPreferenceChangeListener(OnSharedPreferenceChangeListener listener){
        if(settings !=null){
            settings.registerOnSharedPreferenceChangeListener(listener);
        }
    }
 
    public static void unregisterOnSharedPreferenceChangeListener(OnSharedPreferenceChangeListener listener){
        if(settings !=null){
            settings.unregisterOnSharedPreferenceChangeListener(listener);
        }
    }
 
    public static int getLastPosition(){
        //取出name屬性的字串
        lastPosition = settingsForStatus.getInt("LastPosition", 0);
        if(lastPosition == 0){
            return 0;
        }else{
            return lastPosition;
        }
    }
  
    public static void setLastPosition(int lastPosition){
        //置入name屬性的字串
        settingsForStatus.edit().putInt("LastPosition", lastPosition).commit();
    }
  
    /**
     * Load the plugin preferences
     */
    public static boolean load(Context a) {
        try {   
            if (settingsForStatus == null) {
                settingsForStatus = a.getSharedPreferences("Preference", 0);
                editorForStatus = settingsForStatus.edit();
            }
            return true;
        } catch (Exception e) {

        }
     return false;
    }
}
在其它class onCreate時註冊
@Override
public void onCreate(Bundle savedInstanceState) 
{
    SystemPreference.registerForStatusOnSharedPreferenceChangeListener(this);
    SystemPreference.load(context);
}
在離開時記得反註冊以免佔用資源
@Override
protected void onStop() {
    super.onStop();
    SystemPreference.unregisterForStatusOnSharedPreferenceChangeListener(this);
}
之後在需要使用的地方直接呼叫就行
SystemPreference.setLastPosition(傳入整數);
SystemPreference.getLastPosition();

2014年5月24日 星期六

[Android] SharedPreferences的使用

當有一些資料希望在離開AP, 下次再進來時依然能讀到這些資料, 又不想大費周章的寫database紀錄, 就可以用這個簡易的方法 - SharedPreferences








調用setLastPosition(lastPosition)將值寫入SharedPreference
調用getLastPosition()取得上次寫入SharedPreference的值
int lastPosition = 0;

public int getLastPosition(){
    //取得SharedPreference設定("Preference"為設定檔的名稱)
    SharedPreferences settings = getSharedPreferences("Preference", 0);
    //取出name屬性的字串
    lastPosition = settings.getInt("LastPosition", 0);
    return lastPosition;
}

public void setLastPosition(int lastPosition){
    //取得SharedPreference設定("Preference"為設定檔的名稱)
    SharedPreferences settings = getSharedPreferences("Preference", 0);
    //置入name屬性的字串
    settings.edit().putInt("LastPosition", lastPosition).commit();
}