0

我在我的MainActivity中存儲了一個名爲「tgpref」的值。在其他活動中加載偏好設置?

SharedPreferences.Editor editor = preferences.edit(); 
      editor.putBoolean("tgpref", true); //value to save 
      editor.commit();" 

在我的onCreate我有

public SharedPreferences preferences; 
--- 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
preferences = getPreferences(MODE_PRIVATE); 

我想顯示在我的插件的價值,所以我嘗試在控件提供者類的onUpdate寫這個

SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context); 
     boolean tgpref = preferences.getBoolean("tgpref", false) 
     if (tgpref == true) { 
     remoteViews.setTextViewText(R.id.battery, "Risp on"); 
     } else { 
     remoteViews.setTextViewText(R.id.battery, "Risp off"); 
     } 

如果單擊MainActivty中的切換按鈕,我希望在我的小部件中出現「Risp on」else「Risp off」。現在只顯示「Risp off」,所以我不知道我能做些什麼。任何幫助?什麼也沒有發生,我不能加載價值

+0

任何人都可以幫助我嗎?我無法加載我的小部件中的值。 –

回答

0

它看起來不錯,所以我想你的按鈕不會觸發價值變化?!

MainActiviy

private Boolean mTgpref; 
private SharedPreferences prefs; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 

    //... 
    //get value from shared preferences and update ui 
    prefs = this.getSharedPreferences("com.example.app", Context.MODE_PRIVATE); 
    mTgpref = prefs.getBoolean("tgpref", false); 
    setYourText(); 

} 

private void setYourTextAndStoreToSharedPref(){ 
    Log.i("TEST","mTgpref -> " + mTgpref); //check value 
    if(mTgpref){   
     remoteViews.setTextViewText(R.id.battery, "Risp on"); 
    } 
    else 
    { 
     remoteViews.setTextViewText(R.id.battery, "Risp off"); 
    } 
    prefs.edit().putBoolean("tgpref", mTgpref).commit(); 

    //UPDATE YOUR WIDGET HERE 
}  

//function called on switch button click  
private void onSwitchClickButtonClick(){ 
    mTgpref = !mTgpref; //toggle Boolean 
    setYourText(); 
} 

編輯 對不起,我誤解你的主要問題。更新SharedPreferences之後,您應該按照此處所述的步驟操作:http://developer.android.com/guide/topics/appwidgets/index.html#UpdatingFromTheConfiguration

+0

並在小部件? –

+0

upps,認爲你的主要問題是sharedPreferences,我會編輯我的答案 – longilong