私がやりたいのは、人生のゲームプログラムに取り組んでいることです。時間遅延を優先して設定したいのですが、特定の時間に入力できるようにしたいのです。数値はミリ秒または秒です。
しかし、どうすればいいのか少しこだわっています。これを処理する簡単な設定を見つけることはできませんでしたが、あるかもしれません。この設定を行い、入力したデータが整数または浮動小数点であることを確認する簡単な方法はありますか?
おそらく使用している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);
Xml属性Android:numeric
を使用して強制することもできます。この属性の可能な関連値は、decimal
およびinteger
です。
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" />