如何在android的其他活动中检查共享首选项是否已更改?

如何在android的其他活动中检查共享首选项是否已更改?,android,sharedpreferences,Android,Sharedpreferences,大家好,我正在应用程序中使用共享首选项。我正在使用动作条。在这个动作中,我有一个定制的微调器。在主活动中选择OnNavigationItem时,我已将该值存储到共享首选项中。这意味着零标签。撒谎 main_prefs = getSharedPreferences("final_city_id", MODE_PRIVATE); // detail is sharedpreference name SharedPreferences

大家好,我正在应用程序中使用共享首选项。我正在使用动作条。在这个动作中,我有一个定制的微调器。在主活动中选择OnNavigationItem时,我已将该值存储到共享首选项中。这意味着零标签。撒谎

      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
}
}
检查这个。。