1

私は小さな問題を抱えています。プログラムで設定を変更しようとするたびに、アクティビティで変更されることはなく、デフォルトのままになります。

public class Reciever extends BroadcastReceiver {
boolean smsOn = false;
    String smsColor = new String ("Green");
    Uri smsSound;
    String smsVibrate = new String ("Normal");

    SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(arg0);

     smsOn = pref.getBoolean(Preferences."PREF_SMS_ON", false);
     smsColor = pref.getString(Preferences.SMS_PREF_COLOR, "Green");
     smsSound = Uri.parse(pref.getString(Preferences.SMS_PREF_SOUND, "Silent"));
     smsVibrate = pref.getString(Preferences.SMS_PREF_SOUND, "Normal");

             //all variable remain default value verified through debugger

       NotificationManager mNotificationManager = (NotificationManager) arg0.getSystemService(Context.NOTIFICATION_SERVICE);
        if (arg1.getAction().equals(ACTION)){
            if(smsOn == true){....... if checkbox is checked  smsOn still remains false 
}

prefenceactivityクラス

public class Preferences extends PreferenceActivity implements OnPreferenceClickListener{
public static final String PREF_SMS_ON = "PREF_SMS_ON";
public static final String VIBRATE_ON_CALL1 = "VIBRATE_ON_CALL1";
public static final String SMS_PREF_COLOR = "SMS_PREF_COLOR";
public static final String SMS_PREF_SOUND = "SMS_PREF_SOUND";
public static final String SMS_PREF_VIB = "SMS_PREF_VIB";
}

xmlファイル(1つだけコピーします)

    <CheckBoxPreference 
        android:key="PREF_SMS_ON"
        android:title="SMS Notifications"
        android:summary="Turn On SMS Notifications"
        android:defaultValue="false">
    </CheckBoxPreference>  

私はそれが何が間違っているのか理解していません、それはすべて私にとってうまくいくはずのようです

4

1 に答える 1

3

さて、あなたのコードにはいくつかの問題があります。このチュートリアルは、設定を作成するのに適しています。また、外部の設定を変更するPreferenceActivity場合は、エディターを使用する必要があります。次に例を示します。

Editor e = PreferenceManager.getDefaultSharedPreferences(getBaseContext()).edit();
e.putBoolean(Preferences."PREF_SMS_ON", true);
e.commit();

お役に立てば幸いです

コメントへの返信

さて、あなたが使用しているのは、ここPreferenceActivityにドキュメントが示すように、設定の視覚的なスタイルを示すために使用されているということです。また、ここに示されているように、「ユーザーが操作すると、設定は自動的に保存されます」。それはあなたが(間違っていない)外で好みを変えたいという印象を私に与えました、しかしあなたはそれがあなたがしたいことではないと言います。SharedPreferencesPreferenceActivity

ただし、たとえば、を追加するPreferenceActivity必要があるため、リソースファイルから設定をロードしていないことに気付きました。ただし、前述したように、ユーザーがこのアクティビティを直接操作した場合にのみ、設定が自動的に変更されます。それがお役に立てば幸いです。addPreferencesFromResource(R.xml.settings);onCreate

于 2011-02-11T20:17:30.083 に答える