我想要做的是我正在開發一款生活遊戲程序。我想延遲時間並使其成爲首選項,但我希望讓人們可以在特定時間輸入。該數字可以以毫秒或秒爲單位。Android中首選項活動中的數字首選項
但是我有點卡在如何繼續,我一直沒能找到一個簡單的首選項已經處理這個,但可能會有一個。是否有一種簡單的方法可以製作此首選項並確認輸入的數據是整數還是浮點數?
我想要做的是我正在開發一款生活遊戲程序。我想延遲時間並使其成爲首選項,但我希望讓人們可以在特定時間輸入。該數字可以以毫秒或秒爲單位。Android中首選項活動中的數字首選項
但是我有點卡在如何繼續,我一直沒能找到一個簡單的首選項已經處理這個,但可能會有一個。是否有一種簡單的方法可以製作此首選項並確認輸入的數據是整數還是浮點數?
如果您使用的是您可能屬於的PreferenceActivity,則沒有可用的PreferenceActivity。
你需要做這樣的事情:
/**
* Checks that a preference is a valid numerical value
*/
Preference.OnPreferenceChangeListener numberCheckListener = new OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
//Check that the string is an integer.
return numberCheck(newValue);
}
};
private boolean numberCheck(Object newValue) {
if(!newValue.toString().equals("") && newValue.toString().matches("\\d*")) {
return true;
}
else {
Toast.makeText(ActivityUserPreferences.this, newValue+" "+getResources().getString(R.string.is_an_invalid_number), Toast.LENGTH_SHORT).show();
return false;
}
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//get XML preferences
addPreferencesFromResource(R.xml.user_preferences);
//get a handle on preferences that require validation
delayPreference = getPreferenceScreen().findPreference("pref_delay");
//Validate numbers only
delayPreference.setOnPreferenceChangeListener(numberCheckListener);
}
使用的EditTextPreference並設定輸入類型TYPE_CLASS_NUMBER。這將強制用戶輸入數字而不是字母。
EditTextPreference pref = (EditTextPreference)findPreference("preference_name");
pref.getEditText().setInputType(InputType.TYPE_CLASS_NUMBER);
這一個作品,應該回答這個問題。雖然點,彗星和其他值顯示給用戶,用戶**不能**插入它們。所以只有你從這個數字中得到的輸入是數字。 – 2012-03-23 10:32:13
使用XML時,您還可以使用'android:inputType =「number」'。 – tslocum 2014-08-20 02:41:10
您也可以直接在您的preferences.xml
中執行此操作。像這樣的東西會工作:
<EditTextPreference
android:defaultValue="100"
android:dialogTitle="@string/pref_query_limit"
android:inputType="number"
android:key="pref_query_limit"
android:summary="@string/pref_query_limit_summ"
android:title="@string/pref_query_limit" />
唯一的問題是delayPreference未在本例中(這是一個偏好,我知道)定義另外這對於偏好活動類中的代碼,但似乎運作良好,非常感謝你許多。 – Kinglink 2010-07-14 03:01:36