Я затронул этот вопрос здесь , где Кристофер дал на это ответ, но я не совсем понял, поэтому подумал, что пришло время сделать его реальным вопросом, а не просто «продолжением» =)
В существующем приложении, которое я пишу, есть 4 разных экрана:
1. Экран 1 - список узлов (основной экран)
2. Экран 2 - меню настроек, таблица раскладок с кнопками
3. Экран 3 - навигация
4. Экран 4 - текстовая информация о версии и т. Д.
Эти экраны можно перемещать в / из вида «заголовок», расположенного сверху. тогда заголовок имеет 4 разные кнопки:
+--------------------+
| menu with buttons |
+--------------------+
| |
| |
| |
| C O N T E N T |
| |
| |
| |
+--------------------+
Заголовок - это просто XML-файл (header.xml) с несколькими кнопками. Этот header.xml включается в макеты, используя разметку включения. Например, main.xml имеет строку:
<include layout="@layout/header"></include>
Заголовок отображается нормально, но вопрос в том, как правильно подключить OnClickListeners для кнопок в заголовке?
Кристофер указал , что вы можете создать класс Activity и выполнять там хуки, например:
public class BaseActivity extends Activity {
protected View.OnClickListener mButtonListener;
protected void setupHeaderButtons() {
findViewById(R.id.header_btn_1).setOnClickListener(mButtonListener);
// ...
findViewById(R.id.header_btn_n).setOnClickListener(mButtonListener);
}
}
public class FirstActivity extends BaseActivity {
@Override
public void onCreate(Bundle b) {
super.onCreate(b);
setContentView(R.layout.first_activity);
// This needs to be done *after* the View has been inflated
setupHeaderButtons();
}
}
Во-первых, я не могу заставить его работать, поскольку метод setupHeaderButtons не доступен из FirstActivity.
Во-вторых, это правильный путь?
Привет