我正在用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
?
我错过了什么吗?
您已经创建了按钮,但未添加到任何视图/视图组。您必须将其添加到视图中才能接收单击事件。
若要在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)
}