2011-01-13 4 views
2

私は2つのedittextボックスで簡単なアプリケーションを持っています。入力が第1のボックスに入力されると、1組の計算が実行される。代わりに入力が他の入力に入れられると、異なるセットのcalcが発生します。editbox lostfocusは間違ったedittextボックスで起動します

したがって、最初のボックスetBox1に数値が入力され、ユーザーがボックスを離れると、最初のボックスのデータを使用して再入力を計算し、2番目のボックスに入れます。数字が第2ボックスのetBox2に入力された場合、そのデータは最初のボックスの値を計算するために使用されます。

私が試した:

final EditText etBox1 = (EditText) findViewById(R.id.etBox1) 
final EditText etBox2 = (EditText) findViewById(R.id.etBox2) 

etBox1.setOnFocusChangeListener(new View.OnFocusChangeListener() 
{ 
    @override 
    public void onFocusChange(View v, boolean lostfocus) 
    { 
     if (lostFocus == true) 
     { //do my calculations....} 

この火災焦点がetBox1に与えられた代わりの緩い焦点にボックスを待っているとき。これは、ユーザーがボックスに数字を入力する機会がなかったため、アプリケーションをクラッシュさせます。これが "lostFocus"ではなく "hasFocus"として動作する理由は何ですか? AndroidのサイトでlostFocusに関するドキュメントはありません。

+0

またetBox1がフォーカス時にLOSTFOCUSを失っがフォーカスの代わりに、発射された可能性があります。 –

+2

私は以下のようにメソッドを修正しました:@Override public void onFocusChange(View v、boolean hasFocus){if(hasFocus == false)...何かを実行します –

答えて

2

あなたの質問には、これがあります。

final EditText etBox1 = (EditText) findViewById(R.id.etBox1); 
final EditText etBox1 = (EditText) findViewById(R.id.etBox1); 

テキストボックスのマッピング時に同じIDを使用しています。これはあなたの唯一のタイプミスでない限り(
...あなたはetBox1 2回定義すると、あなたも、あなたのコードでコンパイルエラーを取得する必要があることは言うまでもありません

final EditText etBox1 = (EditText) findViewById(R.id.etBox1); 
final EditText etBox2 = (EditText) findViewById(R.id.etBox2); 

を:私はそれがこのように見える必要がありますね質問は、あなたのコードは、実際にhttp://developer.android.com/reference/android/view/View.OnFocusChangeListener.html

onFocusChangeによるのでLOSTFOCUSと呼ばれる自分のブールが後方ので紛らわしい命名され、パブリック抽象ボイドonFocusChange(ビューV、ブールhasFocus)のように定義されて

+0

はい、私は質問に入力ミスをしました。コード。ごめんなさい。あなたのバージョンはどのようにコード化されています。 –

+0

@Ted Betz;もしそうなら、あなたの質問を編集して、そこにあるコードがあなたの実際のコードのように正しいものになるようにしてください。そうでなければ、人々はおそらく私と同じものを見て、あなたの本当の問題を手伝うことができなくなるでしょう... – Nailuj

+0

私は次のようにメソッドを改訂しました: –

0

)...違って見えますあなた、私はチェンにお勧めしたいそれはhasFocusのようなものです。

今あなたは文が間違った方法ラウンドである場合のために、あなたがチェックする必要があることを確認する必要がある場合== falseを

+0

Buggerはあなたの主題にあなたのコメントを気付いただけです。 –

関連する問題