2011-10-20 12 views
2

最初にを実行するには、設定XMLで設定されているデフォルト値が必要です。android:defaultValueが一部の携帯電話で動作しない - 回避策?

一部の携帯電話では機能しますが、一部の他の携帯電話(たとえばSamsung)は非常に奇妙な動作をします。私の特定のケースで

、次のコード:好みのXMLを指定するものの

は、(timeoutに)「10」(prefs.getString()への第二のパラメータとして渡された)のデフォルト値を返すキープ:

android:defaultValue="5" 

文字列「timeout_key」が存在し、正しく読み取られていることを確認できました。

現時点では、手動で設定エディタを起動し、設定をもう一度入力して[OK]を押します。

プログラムでこれを行う方法はありますか?

答えて

2

SharedPreferences.getString()メソッドはバグであり、android:defaultValueを返しません。読み込みが失敗した場合にのみ、2番目のパラメータを返します。この問題を回避するには、第二のparamにヌルを置く:これはもちろん、例外にアプリをインストールした後、それを呼び出して最初の時間を投げる

timeout = Integer.valueOf(prefs.getString(key, null)); 

ので、何をやっていることはtryとで囲むです(:Androidはバグがなかった場合はdefaultValue、最初に使用されることを意図し、あなたのアンドロイドの1):例外をキャッチするとき、あなたのデフォルトを書く

try { 
    timeout = Integer.valueOf(prefs.getString(key, null)); 
} 
catch (Exception e) { 
    Editor editor = prefs.edit(); 
    editor.putString(key, Integer.toString(defaultValue)); 
    editor.commit(); 
} 

醜いが、作品を。

+0

信じられないほどです。あなたのトリックのおかげで私は今稼働しています。 – ateiob

関連する問題