4

シングルクリックでアクションが実行されるように、EditTextにonClickイベントを持たせるにはどうすればよいですか。

private void addListenerOnButton() {

        dateChanger = (EditText) findViewById(R.id.date_iWant);

        dateChanger.setOnClickListener(new OnClickListener() {

            public void onClick(View v) {

                showDialog(DATE_DIALOG_ID);
            }
        });
    }

これは例外として機能しません....シングルクリックすると、画面上のキーパッドだけが表示されますが、ダブルクリックした場合にのみ表示される日付ピッカーダイアログは表示されません

4

4 に答える 4

0

リライト

ユーザーがダイアログを1回クリックするか、トラックボール/方向パッドでナビゲートすると、ダイアログを起動するEditTextがあります。私はこのアプローチを使用します:

  • OnFocusChangeListener を使用してフォーカスを取得し、ダイアログを開きます。
  • ユーザーがダイアログを閉じたときに EditText からフォーカスをクリアするには、dismissDialog() をオーバーライドして、ユーザーがダイアログなしでテキストを入力できないようにします (私が知る限り)。

私もこれを試しました(ただし、この方法はトラックボールの動きに反応したことを覚えています):

  • タッチ イベントには OnClickListener を使用します。
  • setFocusable(false)ユーザー入力を禁止するように設定します。

それが役立つことを願っています。

于 2012-05-08T06:25:35.067 に答える
0

コードを onClickListener から OnFocusChangeListener に変更します。

private void addListenerOnButton() {

    dateChanger = (EditText) findViewById(R.id.date_iWant);

    dateChanger.setOnFocusChangeListener(new OnFocusChangeListener() {

        public void onFocusChange(View v, boolean hasFocus) {
            if(hasFocus) {
                showDialog(DATE_DIALOG_ID);
            }
        }
    });
}
于 2012-05-08T06:26:27.937 に答える