开发者社区> 问答> 正文

“标题”视图和按钮:如何将侦听器附加到没有自己的活动的“标题”中的Button?

我已经在这里谈到了这个问题,克里斯托弗(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访问该方法,因此无法使其工作。其次,这是正确的做法吗?

展开
收起
Puppet 2020-01-24 11:44:38 342 0
1 条回答
写回答
取消 提交回答
  • 该setupHeaderButtons()方法是protected这样的,因此只能由extend该基类的类访问,BaseActivity在这种情况下就是这种方法。

    您确定您FirstActivity正在扩展BaseActivity吗?

    2020-01-24 11:44:58
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载