2017-03-16 45 views
-2

所以我基本上試圖用activity1中的按鈕設置activity2的BG圖像。SharedPreference不工作 - 看不出爲什麼

我正在使用sharedpreference,因此該選項將始終保留。

的事情是,在按下按鈕後,我保存字符串到SharedPreference:

public void onClick(View v) { 
    SharedPreferences.Editor background = getSharedPreferences("Background", MODE_PRIVATE).edit(); 
    if(btn1 == v) 
    { 
     Toast.makeText(this, "btn1", Toast.LENGTH_SHORT).show(); 
     background.putString("selectedBG", "White"); 
     background.commit(); 
    } 
    if(btn2 == v) 
    { 
     background.putString("selectedBG", "Black"); 
     background.commit(); 
    } 
    if(btn3 == v) 
    { 
     background.putString("selectedBG", "Blue"); 
     background.commit(); 
    } 
    if(btn4 == v) 
    { 
     background.putString("selectedBG", "Brown"); 
     background.commit(); 
    } 

} 

,然後在活性2的OnCreate:

SharedPreferences background = getSharedPreferences("Background", MODE_PRIVATE); 
    String chosenBackground = background.getString("SelectedBg", null); 
    Toast.makeText(this,"chosenBackground:" + chosenBackground, Toast.LENGTH_SHORT).show(); 

最後吐司,版畫out chosenBackground:null,不管我按什麼按鈕。 我在做什麼錯?

謝謝。

+1

您的密鑰錯誤 - 將SelectedBg中的'S'更改爲小寫。如果它們永不改變,最好還是使用常量鍵值並引用它們。 –

回答

0

SharedPreferences標識是區分大小寫的

更改此:

String chosenBackground = background.getString("SelectedBg", null); 

要這樣:

String chosenBackground = background.getString("selectedBG", null); 
0
String chosenBackground = background.getString("selectedBG", null); 
0

可以使用defaultSharedPreferences爲單純從任何一點增加和改變數據應用:

將任意值例如:

PreferenceManager.getDefaultSharedPreferences(context) 
       .edit() 
       .putString(KEY, "value") 
       .apply(); 

獲得值:

PreferenceManager.getDefaultSharedPreferences(context) 
       .getString(KEY, "Default value" 

);