2016-05-04 10 views
1

私はこれを過去3時間働かせようとしています。今、あなたの助けが必要です。ユーザーは「完了」をクリックするとき、私は単に私のEditTextからテキストを記録したい:ここなぜテキストを書き込めませんか?

e.setOnKeyListener(new View.OnKeyListener() { 
     public boolean onKey(View v, int keyCode, KeyEvent event) { 

      Log.v(TAG, "KEYCODE: " +keyCode); 
      Toast.makeText(MainActivity.this, "" +keyCode, Toast.LENGTH_SHORT).show(); 

      if ((keyCode == EditorInfo.IME_ACTION_DONE) && (event.getAction() == KeyEvent.ACTION_DOWN)) { 

       Log.v(TAG, "DONE!"); 
       Toast.makeText(MainActivity.this, "" +e.getText(), Toast.LENGTH_LONG).show(); 

       return false; 
      } 
      return false; 
     } 
    }); 

はXMLです:

<EditText 
     android:layout_width="100dp" 
     android:layout_height="wrap_content" 
     android:id="@+id/editText" 
     android:layout_alignBottom="@+id/textView4" 
     android:layout_alignParentRight="true" 
     android:layout_alignParentEnd="true" 
     android:layout_toRightOf="@+id/textView4" 
     android:layout_toEndOf="@+id/textView4" 
     android:imeOptions="actionDone" 
     android:inputType="text" 

     /> 

問題は私のonKeyも任意の乾杯が表示されていないということです、ユーザーが完了をクリックしたときにユーザー入力を取得できません。私はif文で多くの変更を試みましたが、今でもonKeyが呼び出されていません。私は間違って何をしていますか?あなたのコードが動作しないのはなぜ私の質問:)

答えて

3

に答えるために時間を割いて

おかげでdocsに答えています。ソフト入力方法に

キープレスは、このリスナーで メソッドをトリガするために必要とされていない、そして実際にそうするように落胆しています。 デフォルトのアンドロイドキーボードは、 アプリケーションがJelly Bean以降をターゲットにしている場合にはこれらのキーを起動せず、Icechream Sandwichまたは を対象とするアプリケーションへのキー入力に対しては のみを配信します。あなたは彼らが[完了]をクリックしたときにユーザー入力を取得しようとしている場合

、あなたはそんなに

e.setOnEditorActionListener(new TextView.OnEditorActionListener() { 
    public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { 
     if (actionId == EditorInfo.IME_ACTION_DONE) { 
      Toast.makeText(MainActivity.this, e.getText(), Toast.LENGTH_SHORT).show(); 
      return true; 
     } 
     return false; 
    } 
}); 
+0

おかげのような何かを試すことができ、私は時間のカップルのため立ち往生した私の問題を解決しました。次に、onKeyListenerは何のために使用されていますか? –

+0

もう一度docsから 'アプリケーションはそれ自身の画面上のキーパッドを持ち、それに合わせてハードキーボードイベントを処理したい場合にのみ使うべきです。あなたがカスタムキーボードを作ったときに推測しているのですが、キーボードのイベントに合わせるためにこれを使うことができます。 – Antrromet

+0

doneをクリックした後にキーボードを隠したい場合は、falseを返すことができますか? –

関連する問題