2016-12-14 77 views
-2

我正在编写一个代码,它接受来自一个EditText的两个输入,并显示带有两个输入的Toast消息。Android:从一个编辑文本中获取两个输入

以下是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. 获取第二个字符串值并单击完成按钮后,隐藏软键盘。
+0

你真的与你的代码的一些奇怪的事情。首先从EditText获得文本:'pin1 = etPIN.getText()。toString();'。然后你将EditText的文本设置为'null':'etPIN.setText(null);'。现在你再次从它的文本'pin2 = etPIN.getText()。toString();',并且奇怪,为什么pin2是空的。这是因为你用下面这行将它设置为空:'etPIN.setText(null);' –

+0

@VladMatvienko那么解决方案是什么?我对编程本身很陌生。 –

+0

一旦你描述了你想要的东西,我会试着找出一个解决方案。告诉我,你在EditText中输入的内容以及你想要得到的结果 –

回答

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; 
+0

这帮了很多!谢谢弗拉德。 –

相关问题