43

私がやりたいのは、ライフゲームプログラムに取り組んでいることです。時間の遅れをとって好みにしたいのですが、特定の時間に入力できるようにしたいと思います。数値はミリ秒または秒で指定できます。

しかし、私はどのように進めるかについて少し行き詰まっており、すでにこれを処理している単純な設定を見つけることができませんでしたが、あるかもしれません。この設定を行い、入力されたデータが整数または浮動小数点であることを確認する簡単な方法はありますか?

4

5 に答える 5

90

EditTextPreferenceを使用して、入力タイプをTYPE_CLASS_NUMBERに設定します。これにより、ユーザーは文字ではなく数字を入力する必要があります。

EditTextPreference pref = (EditTextPreference)findPreference("preference_name");
pref.getEditText().setInputType(InputType.TYPE_CLASS_NUMBER);
于 2012-02-09T22:37:48.600 に答える
39

xml属性を使用して強制することもできますandroid:numeric。この属性に関連する可能性のある値はdecimal、およびintegerです。

于 2012-03-11T17:16:05.977 に答える
31

で直接これを行うこともできます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" />
于 2014-01-08T22:02:33.700 に答える
17

おそらく使用している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);

}
于 2010-07-08T18:41:19.333 に答える
2

Android Jetpackの設定で変更されたもので、EditTextにアクセスするには、次のようにアクセスする必要があります

val preference = findPreference<EditTextPreference>(getString(R.string.pref_numdefault_key))
preference?.setOnBindEditTextListener {
    it.inputType = InputType.TYPE_CLASS_NUMBER
}
于 2020-05-01T10:57:31.937 に答える