Pre-Honeycomb (Android 3), каждое действие было зарегистрировано для обработки нажатий кнопок с помощью тега onClick
в XML макета:
android:onClick="myClickMethod"
В этом методе вы можете использовать view.getId()
и оператор switch для выполнения логики кнопки.
С введением Honeycomb я разбиваю эти действия на фрагменты, которые можно повторно использовать во многих различных действиях. Большая часть поведения кнопок не зависит от активности, и я хотел бы, чтобы код находился внутри файла Fragments без, используя старый (до 1.6) метод регистрации OnClickListener
для каждой кнопки.
final Button button = (Button) findViewById(R.id.button_id);
button.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// Perform action on click
}
});
Проблема в том, что когда мой макет раздувается, нажатия кнопок по-прежнему получает действие хоста, а не отдельные фрагменты. Есть ли хороший подход к тому или иному
- Зарегистрировать фрагмент, чтобы получать нажатия кнопок?
- Передать события щелчка из Activity во фрагмент, которому они принадлежат?
setOnClickListener
иfindViewById
для каждой кнопки, поэтому для упрощения был добавленonClick
. - person smith324   schedule 23.05.2011