Android:从一个编辑文本中获取两个输入

时间:2016-12-14 08:32:22

标签: android

我现在编写的代码接受来自一个EditText的两个输入,并显示带有两个输入的Toast消息。

这是onCreate()方法中的代码。

    final InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
    imm.toggleSoftInput(InputMethodManager.SHOW_FORCED, InputMethodManager.HIDE_IMPLICIT_ONLY);

    etPIN.setOnEditorActionListener(new TextView.OnEditorActionListener() {
        @Override
        public boolean onEditorAction(TextView textView, int actionId, KeyEvent keyEvent) {
            String pin1 = null, pin2 = null;
            if (actionId == EditorInfo.IME_ACTION_DONE) {
                pin1 = etPIN.getText().toString();

                tvPINGuide.setText(getString(R.string.confirm_pin));
                etPIN.setText(null);

            }

            if(actionId == EditorInfo.IME_ACTION_DONE) {
                pin2 = etPIN.getText().toString();
                Toast.makeText(PINActivity.this, "pin1: " + pin1 + ", pin2: " + pin2, Toast.LENGTH_SHORT).show();
            }


            return true;
        }
    });

使用此代码,似乎不会进入第二步,即获取pin2的值。当我运行代码并单击Toast消息时,就像这样。

pin1: 1234, pin2:

那么我应该怎么做以下两件事呢?

  1. 获取每个pin1pin2字符串值,并最终将其显示给Toast
  2. 获取第二个字符串值并单击完成按钮后,软键盘会隐藏。

1 个答案:

答案 0 :(得分:0)

首先,您需要将pin1pin2声明为全局变量 然后按如下方式更改onEditorAction

            if (actionId == EditorInfo.IME_ACTION_DONE) {
                if(TextUtils.isEmpty(pin1)) { //if pin1 is not entered so far
                    pin1 = etPIN.getText().toString();  //then enter it
                    tvPINGuide.setText(getString(R.string.confirm_pin));
                    etPIN.setText(null);
                } else {   //else pin2 is not entered
                    pin2 = etPIN.getText().toString();  //enter it
                    Toast.makeText(PINActivity.this, "pin1: " + pin1 + ", pin2: " + pin2).show();  //and show the toast 
                }

            } 

            return true;