PreferenceActivity を作成し、xml ファイルを使用して、ユーザーが構成できる設定をロードしようとしています。しかし、どういうわけか「デフォルト値」が正しくロードされていません。これは、preferenceActivity の私のコードです。
public class Instellingen extends PreferenceActivity{
public static final int mode= Activity.MODE_PRIVATE;
public static final String KEY_LOCKACTIONS = "lockactions";
public static final String KEY_VERSIE = "Versie";
public static final String KEY_CHAUFFEUR = "Chauffeur";
public static final String KEY_LATITUDE = "Latitude";
public static final String KEY_LONGITUDE = "Longitude";
public static final String KEY_NEEDLOCUPDATE = "NeedLocUpdate";
public static final String KEY_NEEDAPPUPDATE = "NeedAppUpdate";
public static final String KEY_NEEDSYNC = "NeedSync";
public static final String KEY_SYNCCONTENT = "NeedSyncContent";
public static final String KEY_THREADCOUNT = "ThreadCount";
public static final String KEY_FREESYNCTHREAD = "FreeSyncThread";
public static final long version = 0;
static SharedPreferences mySharedPreferences;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.preferences);
mySharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);
}
public static Boolean GetBoolean(Context context, String Name)
{
mySharedPreferences = context.getSharedPreferences("KCStandaardSettings", mode);
return mySharedPreferences.getBoolean(Name, false);
}
これは、値を取得しようとしているコードです。
@Override
public void run() {
Boolean music = Instellingen.GetBoolean(contextAfterThread, "noteSound");
for (int i = 0; i < number; i++) {
try {
sleep(500);
} catch (InterruptedException e) {
TLogFile.appendLog("e", "log_tag", "Error sleeping soundthread " + e.toString());
e.printStackTrace();
}
if(music){
TSound.PlayNotification(contextAfterThread);
}
}
}
これはxmlそのものです(ファイル名はpreferences.xmlです)
<CheckBoxPreference
android:id="@+id/cbRemainLoggedPreferences"
android:defaultValue="false"
android:key="RemainLoggedIn"
android:title="@string/remainLoggedIn" />
<CheckBoxPreference
android:id="@+id/cbNotificationSound"
android:defaultValue="true"
android:key="noteSound"
android:title="@string/Sound" />
<!-- <CheckBoxPreference
android:id="@+id/cbWidgetAllPreferences"
android:defaultValue="true"
android:key="cbWidgetAll"
android:title="Toon in de Widget de tab met alle berichten" />
<CheckBoxPreference
android:id="@+id/cbWidgetUnreadPreferences"
android:defaultValue="true"
android:key="cbWidgetUnread"
android:title="Toon in de Widget de tab met ongelezen berichten" />
<CheckBoxPreference
android:id="@+id/cbWidgetReadPreferences"
android:defaultValue="true"
android:key="cbWidgetRead"
android:title="Toon in de Widget de tab met gelezen berichten" />-->
同じ問題に関して以前に多くの質問があったことを知っています。私がまだこれを求めている理由は、それらのどれも私のために働いていなかったからです。私は使用しようとしました: PreferenceManager.setDefaultValues(this, R.xml.preferences, false);
しかし、私が言ったように、それは私の問題を解決しませんでした。明確にするために、問題は、SharedPreferences 関数自体によって返されるデフォルトの「エラー」値をもたらすキーが見つからないことです。
このアプリを targetsdk lvl 8 でビルドしているために、この問題が発生する可能性はありますか? Android 2.2 とは