2012-02-24 6 views
1

私はEditText(intが許される)とKeyEventを持つウィジェットを開発しようとしています。問題は '0'が押されたとき、KeyEventを検出するが、私のEditTextに '0'を書き込まないときである。私はそれらを押すために数字を加えるべきです。EditTextとEventKeyのsetText

et1.setOnKeyListener(new OnKeyListener() { 
    @Override 
    public boolean onKey(View v, int keyCode, KeyEvent event) { 
     if (KeyEvent.ACTION_UP != event.getAction()) { 
      switch (keyCode) { 
       case KeyEvent.KEYCODE_0: 
        //Do something... 
        break; 
       default: 
        return false; 
      } 
     } 
     return true; 
    } 
}); 

私はそのようなことを試みましたが、それほど効率的ではありません。

et1.setText(et1.getText().toString + "0"); 

解決策をご存知ですか?

+1

車輪を改造している場合のために: 'android:inputType =" number "' http://stackoverflow.com/questions/4645119/how-to-set-only-numeric-value-for-edittext-アンドロイドで –

+0

私は自分のactivity.xmlに使ってきましたが、私の問題は私がキーを押すと、私のEditTextには表示されませんが、KeyEventが生成されます。私は両方の時間に行うことはできますか? –

答えて

1

は私が自分自身明確ペップ作るためにしてみましょう:

1)何を達成しようとしていることだけ整数(数値)の入力を可能にするEditTextを持っている場合は、属性とそのSを追加することができますそれ。あなたはその動作のためのカスタムコントロールを必要としません。

android:inputType="number" 

2)あなたがオーバーライドonKey方法でtrueを返すことによって、それをブロックしているという理由だけで、あなたのEditText内の任意の入力を取得いけない理由があります。

真のリスナーがそうでない場合はfalseイベントを消費している場合:

refonKeyを返す必要があります、と言います。意味

、あなたがtrueを返却する場合は、あなたが担当している、AndroidはあなたのEditTextに入力何かを習慣。あなたが提供したコードでは、あなた自身ではやっていないので、EditTextは埋められません。

したがって、ハンドラーをすべて削除してからinputType属性をxmlに追加することをお勧めします。


更新

あなたが別の(EditText2)での入力に基づいて(のはEditText1それを呼びましょう)EditTextを更新する必要がある場合は、私は最初の1で入力を追跡示唆TextWatcherを使用して、textEditText2を処理済みの値に設定します。

サンプルコードはthis similar issueです。

+0

あなたの興味のために多くのおかげで@ Zortkun。私はすでに 'xml'で' inputType'を使用しています。私は2つの 'EditText'でウィジェットを行いたいからです。 1つの 'EditText'に数値を入れると、もう1つは算術変換で埋められます。このため、イベントを実行して塗りつぶしたいと思います。 –

+0

ねえ。答えとして受け入れていただきありがとうございますが、私はあなたには異なる問題があると思います。私はあなたのためにいくつかの方法を更新し提案します。 –

+0

それは私が必要とするものです!どうもありがとう! –

関連する問題