我想要做的是我正在开发一款生活游戏程序。我想延迟时间并使其成为首选项,但我希望让人们可以在特定时间输入。该数字可以以毫秒或秒为单位。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