gpt4 book ai didi

Android:EditText 输入验证

转载 作者:行者123 更新时间:2023-11-30 01:46:48 24 4
gpt4 key购买 nike

我正在构建一个应用程序,其中有一个 EditText需要插入一个字节值。 EditText应该只能接受值 -128 到 127,它们是 Byte.MIN_VALUEByte.MAX_VALUE .

我创建了一个 class称为 EditTextFilter实现TextWatcher .我用 afterTextChanged事件监听器来检查值。我在一个单独的 class 中处理这个因为我将它用于多个 EditText对象。请看下面的代码:

@Override
public void afterTextChanged(Editable s)
{
double value = 0;

try
{
value = Double.parseDouble(s.toString());
}
catch (NumberFormatException e)
{
Log.e(EditTextFilter.class.toString(), e.getMessage());
}

switch (this.type)
{
case TYPE_BYTE:
Log.v(EditTextFilter.class.toString(), "-----> EditTextFilter Byte");
if (value > Byte.MAX_VALUE)
{
Log.v(EditTextFilter.class.toString(), "-----> Value out of range. Greater than Byte.MAX_VALUE");
Toast.makeText(context, "Value out of range. Greater than Byte.MAX_VALUE", Toast.LENGTH_SHORT).show();
}
else if (value <= Byte.MIN_VALUE)
{
Log.v(EditTextFilter.class.toString(), "-----> Value out of range. Less than Byte.MIN_VALUE");
Toast.makeText(context, "Value out of range. Less than Byte.MIN_VALUE", Toast.LENGTH_SHORT).show();
}
break;
case TYPE_CHAR:
Log.v(EditTextFilter.class.toString(), "-----> EditTextFilter Char");
if (s.toString().length() > 1)
{
Log.v(EditTextFilter.class.toString(), "-----> Please enter single character");
Toast.makeText(context, "Please enter a single character", Toast.LENGTH_SHORT).show();
}
}
}

然后我从我的 byte 调用类处理程序。如下:

    // Handle the text change to validate input
EditTextFilter.addTextChangedListener(editText, EditTextFilter.TYPE_BYTE);

如您所见,我只检查值,触发 Toast告诉用户,但这不会改变仍然会在我的 Database 中造成损坏的值.如何确保输入的值在范围内并且小于 Byte.MIN_VALUE或超过 Byte.MAX_VALUE然后将其设置为最小值或最大值。我知道这可能会让人有些困惑,但我希望你们明白我在问什么。

我很感激在这件事上的任何帮助。我看过Is there a way to define a min and max value for EditText in Android?但它没有指定如何处理大于 int 的数字也没有解释如何更改 EditText来自 EditTextFilter类。

提前致谢

最佳答案

您需要重置 EditText 的值或将其设置为您指定的值。下面是我过去用于 MAX/MIN INT 值的示例。它应该类似于您要对 BYTE 值执行的操作。只需获取 EditText 的内容,通过子字符串删除最后一个字符,然后将其写回 EditText。

@Override
public void afterTextChanged(Editable s) {

if (s.length() == 0) {

} else {
Integer cap = Integer.valueOf(etCapture.getText().toString());
if (cap > MAX) {
Toast.makeText(SettingsActivity.this, "Out of range. Maximum capture number is " + MAX, Toast.LENGTH_SHORT).show();
String strCap = etCapture.getText().toString();
strCap = strCap.substring(0,strCap.length()-1);
etCapture.setText(strCap);
etCapture.setSelection(strCap.length());
} else if (cap < MIN) {
Toast.makeText(SettingsActivity.this, "Out of range. Minimum capture number is " + MIN, Toast.LENGTH_SHORT).show();
etCapture.setText(MIN.toString());
} else {
SharedPreferences.Editor editor = mSharedPreferences.edit();
editor.putInt("cap", cap);
editor.apply();
}
}
}

关于Android:EditText 输入验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33609994/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com