如何在android的其他活动中检查共享首选项是否已更改?
大家好,我正在应用程序中使用共享首选项。我正在使用动作条。在这个动作中,我有一个定制的微调器。在主活动中选择OnNavigationItem时,我已将该值存储到共享首选项中。这意味着零标签。撒谎如何在android的其他活动中检查共享首选项是否已更改?,android,sharedpreferences,Android,Sharedpreferences,大家好,我正在应用程序中使用共享首选项。我正在使用动作条。在这个动作中,我有一个定制的微调器。在主活动中选择OnNavigationItem时,我已将该值存储到共享首选项中。这意味着零标签。撒谎 main_prefs = getSharedPreferences("final_city_id", MODE_PRIVATE); // detail is sharedpreference name SharedPreferences
main_prefs = getSharedPreferences("final_city_id", MODE_PRIVATE);
// detail is sharedpreference name
SharedPreferences.Editor editor = main_prefs.edit();
// to remove paricular value from detail
String spusername = main_prefs.getString("changed_city_id", "novalue");
if(spusername!= null && !spusername.equals(""))
{
System.out.println("inside if condition........");
Log.e("Spusername != null","-->"+spusername);
editor.remove("changed_city_id");
Log.e("value removed","-->"+spusername);
editor.putString("changed_city_id",spinner_city_id);
editor.commit();
String spusername1 = main_prefs.getString("changed_city_id", "novalue");
System.out.println("spusername1```````````"+spusername1);
}
else
{
System.out.println("inside else condition........");
editor.putString("changed_city_id",spinner_city_id);
editor.commit();
String spusername2 = main_prefs.getString("changed_city_id", "novalue");
System.out.println("spusername2```````````"+spusername2);
}
现在我转到选项卡2或3,然后再次选择微调器。我的价值观必须改变。我的共同偏好值也在变化。现在,我想检查“我的2”选项卡和“我的第三个”选项卡中的共享首选项是否已更改。这意味着另一项活动。但是我的微调器的onNavigationItemSelected方法在我的zero选项卡中。所以我使用的是OnSharedPreferenceChangeListener。在某些链接中,建议使用此链接。因为当更改共享首选项时,会自动触发此覆盖方法。我找了很多东西,累了。但我无法清楚地进入。有人能帮我澄清吗?提前谢谢
prefs.registerOnSharedPreferenceChangeListener(
new SharedPreferences.OnSharedPreferenceChangeListener() {
public void onSharedPreferenceChanged(SharedPreferences prefs, String key) {
// Implementation
}
});
而不是这个
// Use instance field for listener
// It will not be gc'd as long as this instance is kept referenced
listener = new SharedPreferences.OnSharedPreferenceChangeListener() {
public void onSharedPreferenceChanged(SharedPreferences prefs, String key) {
// Implementation
}
};
prefs.registerOnSharedPreferenceChangeListener(listener);
尝试如下:
public class myClass implements OnSharedPreferenceChangeListener
{
private SharedPreferences settings;
settings = PreferenceManager.getDefaultSharedPreferences(this);
settings.registerOnSharedPreferenceChangeListener(this);
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key)
{
// Process it here
}
}
检查这个。。