0

「tgpref」という値を MainActivity に保存しました。

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」または「Risp off」と表示されるようにします。現在、「Rasp off」しか表示されていないので、どうすればよいかわかりません。何か役に立ちますか?値を読み込めません

4

1 に答える 1

0

それはよさそうだので、あなたのボタンは値の変更をトリガーしないと思いますか?!

メインアクティビティ

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

于 2013-08-23T15:24:35.643 に答える