2

ここにあるAndroid 入力イベントのドキュメントは、イベント リスナーで false を返すと、イベントが他のリスナーに引き継がれることを暗示しているようです。例えば

OnTouchListener touchListener = new OnTouchListener() {

    @Override
    public boolean onTouch(View v, MotionEvent event) {
        // should continue on to other views
    return false;
    }
};

問題は、同じレイアウトに 2 つのボタンがあり、そのうちの 1 つをクリックすると、false を返すため、イベントがすべてのビューで継続すると予想されることです。次に例を示します。

    Button submitButton = (Button) findViewById(R.id.submit_button);
    submitButton.setOnTouchListener(new OnTouchListener() {

        @Override
        public boolean onTouch(View v, MotionEvent event) {
            System.out.println("--> submitButton");
            return false;
        }

    });

    Button clearButton = (Button) findViewById(R.id.clear_button);
    clearButton.setOnTouchListener(new OnTouchListener() {

        @Override
        public boolean onTouch(View v, MotionEvent event) {
            System.out.println("--> clearButton");
            return false;
        }

    });

送信ボタンのリスナーが false を返すので、クリック結果がクリア ボタンに送信されることを期待しますが、出力は常に次のようになります。

--> submitButton
--> submitButton

記事を誤解しているように見えるので、ビュー内でイベントがどのように伝播されるかを誰か説明できますか?

4

1 に答える 1