【发布时间】:2010-01-06 15:13:47
【问题描述】:
我已经触及了这个问题here,Christopher 对此给出了答案,但我并不真正理解它,所以我认为是时候让它成为一个真正的问题,而不仅仅是一个“跟进”= )
就目前而言,我正在编写的应用程序有 4 个不同的屏幕:
- 屏幕 1 - 节点列表(主屏幕)
- 屏幕 2 - 选项菜单,带按钮的 tableLayout
- 屏幕 3 - 导航
- 屏幕 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 的正确方法是什么?
Christopher pointed out,您可以创建一个 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 访问。其次,这是正确的做法吗?
【问题讨论】: