我已经在这里谈到了这个问题,克里斯托弗(Christopher)在这里回答了这个问题,但是我并不太了解,所以我认为是时候让它成为一个真正的问题,而不仅仅是“跟进” =)
就目前而言,我正在编写的应用程序具有4个不同的屏幕:
屏幕1-节点列表(主屏幕) 屏幕2-选项菜单,带有按钮的tableLayout 屏幕3-导航 屏幕4-版本等文本详细信息 可以使用顶部的“标题”视图在这些屏幕之间进行导航。标题然后具有4个不同的按钮:
+--------------------+
| menu with buttons |
+--------------------+
| |
| |
| |
| C O N T E N T |
| |
| |
| |
+--------------------+
标头只是带有几个按钮的XML文件(header.xml)。该header.xml是使用include-markup包含在布局中的。例如,main.xml中包含以下行:
<include layout="@layout/header"></include>
标题显示正确,但问题是-为标题中的按钮附加OnClickListeners的正确方法是什么?
Christopher 指出,您可以创建一个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访问该方法,因此无法使其工作。其次,这是正确的做法吗?
该setupHeaderButtons()方法是protected这样的,因此只能由extend该基类的类访问,BaseActivity在这种情况下就是这种方法。
您确定您FirstActivity正在扩展BaseActivity吗?
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。