【问题标题】:Alert Dialog with a numeric EditText field带有数字 EditText 字段的警报对话框
【发布时间】:2013-02-03 07:02:22
【问题描述】:

我正在使用具有 EditText 字段的警告对话框提醒用户。

AlertDialog.Builder alert = new AlertDialog.Builder(this);
    db.open();
    Cursor f = db.getTitle(position + 1);
    alert.setTitle("Age");
    alert.setMessage("New age?");

    // Set an EditText view to get user input
    final EditText input = new EditText(this);
    alert.setView(input);
    input.setText(f.getString(3));
    db.close();
    alert.setPositiveButton("Change",
            new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int whichButton) {
                    String age = input.getText().toString();
                    db.open();
                    Cursor ff = db.getTitle(position + 1);
                    db.updateTitle(ff.getLong(0), ff.getString(1),
                            ff.getString(2), age, ff.getString(4),
                            ff.getString(5));
                    db.close();
                    details();
                    age();
                }
            });

    alert.setNegativeButton("Keep", new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int whichButton) {
            // do nothing
        }
    });
    alert.show();

有没有办法只允许用户输入一个两位数的数字(没有字母、符号等)?

【问题讨论】:

  • 如果必须是数字,为什么不直接用spinners或者drop-down-list来表示呢?它应该比文本框更直观。
  • 这不取决于数值的上下文是什么吗?
  • 里程表读数怎么样?还是许多其他人?为什么要质疑这个问题,给出答案或什么都不做。

标签: android formatting android-edittext android-alertdialog


【解决方案1】:

我建议你在EditText 上设置一些输入过滤器和一个关键监听器,如下所示:

input.setFilters(new InputFilter[] {
    // Maximum 2 characters.
    new InputFilter.LengthFilter(2),
    // Digits only.
    DigitsKeyListener.getInstance(),  // Not strictly needed, IMHO.
});

// Digits only & use numeric soft-keyboard.
input.setKeyListener(DigitsKeyListener.getInstance());

【讨论】:

  • EditText 上的方法名叫做 setFilters,而不是 setFilter。 (我无法自己编辑,因为它只有一个字符更改)
  • 加上额外的参数,我可以输入十进制:DigitsKeyListener.getInstance(false, true) 这正是我需要的,谢谢。神秘解决了
猜你喜欢
  • 2012-08-06
  • 2019-09-05
  • 2011-11-19
  • 1970-01-01
  • 2021-11-10
  • 2017-10-05
  • 1970-01-01
  • 2015-06-14
  • 1970-01-01
相关资源
最近更新 更多