如何在Android课堂上获取按钮Onclicklistener?

时间:2019-06-22 02:47:57

标签: android onclicklistener android-button

我正在使用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

我错过了什么吗?

1 个答案:

答案 0 :(得分:0)

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

要在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)
}