2013-06-18 7 views
2

Андроида ввода документации событие here, кажется, подразумевает, что возвращение ложным в слушателя событий вызовет событие для продолжения на других слушателей. НапримерAndroid Event Размножение

OnTouchListener touchListener = new OnTouchListener() { 

    @Override 
    public boolean onTouch(View v, MotionEvent event) { 
     // should continue on to other views 
    return 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; 
     } 

    }); 

Поскольку слушатель кнопки отправки возвращает ложь, я бы ожидать, что результат нажмите для отправки на кнопку ясной, но выход всегда:

--> submitButton 
--> submitButton 

Может кто-нибудь объяснить, как события про с точки зрения мнения, поскольку я, кажется, недопонимаю статью?

+1

Вы можете попробовать с OnClickListener вместо OnTouchListener .. –

+0

Это теоретический вопрос. Я пытаюсь подтвердить поведение, описанное в документации. Кроме того, onClick не имеет никакого отношения к этому сценарию, поскольку для этого слушателя не требуется возвращаемое значение. –

ответ

1

События распространяются из родительских представлений в дочерние. Никогда не см. Взгляды братьев и сестер.

То, что вы пытаетесь, будет работать, если ваш clearButton находится внутри submitButton (ведьма даже не возможна).

Вы могли бы имитировать это поведение с performClick()