Android 在编辑文本中设置时间

Android 在编辑文本中设置时间,android,android-edittext,Android,Android Edittext,我想实现一个类似于android alarm应用程序的EditText。在此应用程序中,有两个EditText字段用作HH和mm。在这些字段中键入会覆盖以前的数字。在HH字段中键入第二个数字后,focus会自动切换到mm字段 我曾尝试使用extchanged()方法中的TextWatcher手动输入此逻辑,但不幸的是,在此方法中修改文本会导致递归循环 正确的方法是什么 有关报警应用程序示例,请参见下文: 将侦听器添加到hh文本视图,如下所示 hh.setOnKeyListener(new On

我想实现一个类似于android alarm应用程序的
EditText
。在此应用程序中,有两个
EditText
字段用作
HH
mm
。在这些字段中键入会覆盖以前的数字。在
HH
字段中键入第二个数字后,focus会自动切换到
mm
字段

我曾尝试使用
extchanged()
方法中的
TextWatcher
手动输入此逻辑,但不幸的是,在此方法中修改文本会导致递归循环

正确的方法是什么

有关报警应用程序示例,请参见下文:


将侦听器添加到hh文本视图,如下所示

 hh.setOnKeyListener(new OnKeyListener() {

        @Override
        public boolean onKey(View v, int keyCode, KeyEvent event) {

            if (hh.getText().toString().length() == 2){
                mm.requestFocus();
            }
            return false;
        }
    });  

希望这对您有用。

事实证明,从
onTextChanged
方法编辑文本实际上不会导致递归循环,只要您使用布尔开关暂时禁用逻辑即可。费力地将所有逻辑写入
TextWatcher
以模拟报警样式
EditText
字段。

不幸的是
android:maxLength=“2”
在这种情况下不起作用。
EditText
中始终有两位数字(从一开始)-因此,当用户尝试键入时,它必须重写已有的内容。通过将
maxLength
设置为2,它有效地阻止了
TextChangedListener
捕获用户输入的“新数字”——因为一旦用户输入一个新数字,它就会被忽略,因为
EditText
已经达到最大值。请查看安卓手机上的报警应用程序,看看我的意思——你会有更好的想法我试图复制的行为。