2015-05-16 135 views
3

你好我在我的應用程序中有ColorPicker。當我將由ColorPicker選擇的顏色設置爲Activity背景時,它可以正常工作。但是當我重新啓動應用程序時,顏色會更改爲默認值!如何保存Activity的狀態?可能嗎?提前致謝!!!在android中保存活動狀態?

+3

考慮到您退出應用程序並打開它,您應該將數據存儲在'SharedPreferences'中。 – EpicPandaForce

+0

你能告訴我一個例子嗎? –

+1

http://developer.android.com/guide/topics/data/data-storage.html#pref – antonio

回答

3

因此,例如,你可以保存這樣的顏色(我剛剛把一個十六進制顏色參考,但可以將其更改爲任何你願意的話):

public void setBackgroundColor() { 
    SharedPreferences sharedPreferences = getPreferences(Context.MODE_PRIVATE); 
    SharedPreferences.Editor editor = sharedPreferences.edit(); 
    editor.putString("color", "#FFFFFF"); 
    editor.commit(); 
} 

然後只是確保你調用此方法每次加載/重新加載:

public void getBackgroundColor() { 
    SharedPreferences sharedPreferences = getPreferences(Context.MODE_PRIVATE); 
    if (sharedPreferences.contains("color")) { 
     String myColor = sharedPreferences.getString("color", null); 
     mybackground.setBackgroundColor(Color.parseColor(myColor)); 
    } 
} 
+0

只是爲了使用方法+1 – Petro

+0

我怎樣才能把'int'而不是「#FFFFFF」? –

+0

只需將putString和getString改爲putInt和getInt :) –

2

Andy's Answer是正確的。但是,我認爲我會在節省和加載偏好方面留言。這些是字符串的通用保存/加載方法。這是我所有的活動中使用的。它可以爲你節省很多頭痛!

public static String PREFS_NAME = "random_pref"; 

static public boolean setPreference(Context c, String value, String key) { 
     SharedPreferences settings = c.getSharedPreferences(PREF_NAME, 0); 
     settings = c.getSharedPreferences(PREF_NAME, 0); 
     SharedPreferences.Editor editor = settings.edit(); 
     editor.putString(key, value); 
     return editor.commit(); 
    } 

    static public String getPreference(Context c, String key) { 
     SharedPreferences settings = c.getSharedPreferences(PREF_NAME, 0); 
     settings = c.getSharedPreferences(PREFS_NAME , 0); 
     String value = settings.getString(key, ""); 
     return value; 
    }