1

日付ピッカーダイアログを開くためにクリックするテキスト(ボタンなし)を含むフィールドを作成しようとしています。私は完全に初心者で、簡単な例で試しています。

 firstbirth.setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View view, MotionEvent motionEvent) {
                Toast.makeText(getApplicationContext(), "ahooj", Toast.LENGTH_LONG).show();
                return false;
            }
        });

firstbirth はスピナーです。Edittext で試してみましたが、結果は同じでした。誰でも私を助けることができますか?

前もって感謝します!

4

2 に答える 2

5

代わりに OnClickListener を使用してください。

setOnClickListener(View.OnClickListener l)

OnTouchListeners は複数のタッチ イベント (タッチ ダウン、タッチ アップなど) でトリガーされますが、OnClickListener は 1 回だけ発生します (onClick :) )。

何らかの理由で OnTochListener を使用したい場合は、一度だけ呼び出されるようにすることができます。

試す:

@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
if (motionEvent.getAction() == MotionEvent.ACTION_UP {   // another option would be ACTION_DOWN for example
     Toast.makeText(getApplicationContext(), "ahooj", Toast.LENGTH_LONG).show();
     return true;
    }
return false;
}
于 2014-10-05T16:47:30.910 に答える
0

論理的に聞こえますが、OnClick イベント アプリケーションを使用すると、初期化中に落ち込んでしまいます。

 firstbirth.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

               DialogFragment dd1 = new DatePickerFragment();
               dd1.show(getFragmentManager(), "Select a date");
            }
 });

onTouch イベントを使用すると動作するため、DialogFragment には問題はありません。ありがとう :)

于 2014-10-05T18:03:03.813 に答える