Android 是否在其他活动中加载首选项?

Android 是否在其他活动中加载首选项?,android,android-widget,sharedpreferences,textview,Android,Android Widget,Sharedpreferences,Textview,我在MainActivity中存储了一个名为“tgpref”的值 在我的onCreate中,我有 public SharedPreferences preferences; --- public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); preferences = getPreferences(MODE_

我在MainActivity中存储了一个名为“tgpref”的值

在我的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");
      }

如果单击主活动中的切换按钮,我希望在我的小部件中显示“Risp打开”或“Risp关闭”。现在只显示“Risp off”,所以我不知道该怎么做。有什么帮助吗?什么也没发生我无法加载值看起来不错,所以我猜你的按钮不会触发值更改

主要活动

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();
}
编辑
对不起,我误解了你的主要问题。更新SharedReferences后,您应该按照此处描述的步骤进行操作:

有人可以帮助我吗?我无法加载widget.upps中的值,虽然您的主要问题是共享引用,但我将编辑我的答案
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();
}