2013-10-15 32 views
-1

我在我的应用中使用parse.com推送通知。我说像这样的“禁用通知”选项,应用程序设置:禁用解析通知

<PreferenceCategory android:title="Obvestila" > 
    <CheckBoxPreference 
     android:defaultValue="true" 
     android:key="prefNotification" 
     android:summary="Za obvestila je potrebna internetna povezava" 
     android:title="Prejemal obvestila" /> 
</PreferenceCategory> 

,然后添加这个方法来MainActivity:

public void getSettingsPrefs(){ 
    SharedPreferences settingsPrefs = PreferenceManager.getDefaultSharedPreferences(this); 
    notification = settingsPrefs.getBoolean("prefNotification", true); 

    if (notification == false) 
    { 
     PushService.setDefaultPushCallback(this, null); 
    } 
    else 
    { 
     PushService.setDefaultPushCallback(this, MainActivity.class); 
    } 
} 

现在的问题是,这只是部分有效。一旦我选中或取消选中设置中的框,我需要完全重新打开MainActivity,以便在onCreate中执行getSettingsPrefs()。如何在每次复选框被选中时执行IF语句?

回答

0

通过添加OnPreferenceChangeListener来解决这个问题。

notification = (CheckBoxPreference) findPreference("prefNotification"); 
    notification.setOnPreferenceChangeListener(new OnPreferenceChangeListener(){ 

     @Override 
     public boolean onPreferenceChange(Preference preference, 
       Object newValue) { 
      if (newValue.toString().equals("true")) 
      { 
       notificationsOn(); 
      } 
      else 
      { 
       notificationsOff(); 
      } 
      return true; 
     } 

    });