2015-05-16 136 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; 
    }