2016-12-14 14 views
-2

EditTextから2つの入力を受け入れ、2つの入力を持つToastメッセージを表示するコードを作成しています。Android:1つの編集テキストから2つの入力を取得

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:

だから私は、次の2つのことを行うために何をすべきでしょうか?

  1. pin1pin2文字列値を取得し、最終的にToastにそれらを示しています。
  2. 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

これは多くの助けになりました!ありがとう、ヴラッド。 –

関連する問題