我正在使用Android开发Baidu notification
。 Baidu 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
?
我错过了什么吗?
答案 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)
}