2016-12-14 102 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

這幫了很多!謝謝弗拉德。 –

相關問題