4

コントロール (EditText) に「beforeLosingFocus」イベントのようなものを実装したいのですが、フォーカスの変更を防止できるようにしたいので、ユーザーが値を入力できるようになるまで、コントロールにフォーカスが必要です。

onFocusChange イベントを使用しようとしましたが、このイベントはフォーカスが変更された後に発生します。このイベントは 2 回発生します (1 つのコントロールがフォーカスを失い、別のコントロールがフォーカスを取得したため)。

別のコントロールが一般的な方法でフォーカスを取得するのを防ぐことは可能ですか? (別のコントロールのタップまたは「次へ」キーのクリックでフォーカスが変わる可能性があるため)

4

3 に答える 3

1

これを行うには2つの方法があります:1)他のすべてのビューのsetFocusableプロパティをデフォルトでfalseに保ちます。次に、ロジックに従って1つずつ有効にします。

2)onFocusChangedListenerが呼び出されたら、を使用してフォーカスを目的のビューに戻しますv.requestFocus()

于 2012-04-15T15:21:50.340 に答える
0

EditTextのOnFocusChangeListenerを「アクティビティ中」の変更オーバーライドし、ナビゲーションボタンのOnClicksをオーバーライドして整合性テストを実行します。

編集 (校正しておけば助かります、ごめんなさい)

onFocusChange(View view, boolean state)EditTextでをオーバーライドして、をチェックしてユーザーにテキストの入力を強制if(state == false)する方法を知っているとおっしゃいました。しかし、ユーザーがナビゲーションボタン([次へ]など)をクリックすると、新しいアクティビティを開始する前にonFocusChangeが呼び出されないこともわかりました。

したがって、複数のEditText(ユーザー名とパスワードなど)がある場合はonFocusChangeを保持し、 [次へ]ボタンのonClickListener内にチェック追加して、新しいアクティビティを開始するに、ユーザーがEditTextにテキストを入力したことを確認します。

于 2012-04-15T15:08:26.953 に答える