如何在安卓课堂上获得按钮Onclicklistener



我正在用Android开发Baidu notificationBaidu notification没有Button.所以我决定创建自定义Baidu notification并在其上添加Button

我将 id 传递给Class并将其设置为Button.我想实现OnCLickListener并在Class中获取点击事件。

Activity 中,我使用以下代码将button的 id 传递给customNoti类。

private fun initMyCustomNotiBuilder() {
        val customNoti = CustomNoti(
            R.layout.notification_custom_builder,
            R.id.notification_icon,
            R.id.notification_title,
            R.id.notification_text,
            R.id.btn_OK,this
        )
    }

代码如下所示

class CustomNoti : CustomPushNotificationBuilder, View.OnClickListener{
    lateinit var btn:Button
    lateinit var context:Context
    companion object{
        const val TAG = "CustomNoti"
    }
    constructor(layoutId: Int, layoutIconId: Int, layoutTitleId: Int, layoutTextId: Int, buttonID: Int,context: Context) : super(layoutId, layoutIconId, layoutTitleId, layoutTextId){
        this.context = context
        btn = Button(context)
        btn.id = buttonID
        btn.setOnClickListener(this)
    }
    override fun onClick(view: View?) {
        Log.d(TAG,"onClick view:${view?.id}")
    }
}

Baidu notification现在有按钮,但是当我单击该按钮时,clicklistener不起作用。

如何在课堂上获得Onclicklistener

我错过了什么吗?

您已经创建了按钮,但未添加到任何视图/视图组。您必须将其添加到视图中才能接收单击事件。

若要在CustomNoti中按 id 查找视图,可以在构造函数中执行以下操作。

constructor(layoutId: Int, layoutIconId: Int, layoutTitleId: Int, layoutTextId: Int, buttonID: Int,context: Context) : super(layoutId, layoutIconId, layoutTitleId, layoutTextId){
    this.context = context
    val view = LayoutInflater.from(context).inflate(layoutId, null)
    btn = view.findViewById(buttonID)
    btn.setOnClickListener(this)
}

最新更新