小编Ael*_*Ael的帖子

任何要求 EditTextPreference 值在 Android 中不为空的简单方法?

我有一个数字,EditTextPreference其中必须是 0-9 的数字。我可以阻止其他字符,但不能阻止退格。Backspace + 好的 = 一个空值。空值意味着当它被检索并解析为一个数字时,它会崩溃。

目前,我会检查首选项何时发生变化,是否有特定键且没有长度,如果有,我会重新保存为“0”。有没有更简单的内置方法来做到这一点?一个“需要值”属性,或者至少是一些更自动的东西,比如能够获得digits更改后的偏好?(如果数字是“0123456789”,那么它不能为空)。

到目前为止,在设置活动中我有:

public void onSharedPreferenceChanged(SharedPreferences prefs, String key) {
    //Prevent EditText from being non number
    String type = this.findPreference(key).getClass().getSimpleName();
    if( type.equals("EditTextPreference")
        //Put key of any allowed to be blank here...
                && prefs.getString(key, "0").length()==0 ){ 
            this.findPreference(key).setSummary("0");

        SharedPreferences.Editor prefedit = prefs.edit();
        prefedit.putString(key, "0");
        prefedit.commit();
    }
    updateSummaries();
}
Run Code Online (Sandbox Code Playgroud)

(设置摘要不起作用--^。能够检查android:digits="0123456789"属性就可以了,所以我不需要输入任何应该为空白的键。)

或者在主要活动中,我可以将所有数字首选项放入字符串中,检查字符串,如果不好将其设置为 0,然后解析每个字符串。当我使用更多它们时,这感觉不那么吸引人,而不是自动的。

String sTT = prefs.getString("mykey", "0");
>> x10
if(sTT.length()==0){ sTT="0"; }
>> x10
tt = Long.parseLong( …
Run Code Online (Sandbox Code Playgroud)

android android-2.3-gingerbread edittextpreference

5
推荐指数
1
解决办法
2462
查看次数