Как получить кнопку Onclicklistener в классе для Android? - PullRequest
0 голосов
/ 22 июня 2019

Я разрабатываю Baidu notification в Android. Baidu notification не имеет Button. Поэтому я решил создать пользовательский Baidu notification и добавить к нему Button.

Я передаю идентификатор на Class и устанавливаю его на Button. Я хочу реализовать OnCLickListener и получить событие клика в Class.

В Activity я использую следующий код для передачи идентификатора button в customNoti class.

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 голосов
/ 22 июня 2019

Вы создали кнопку, но она не добавлена ​​ни в один вид / группу просмотра.Вы должны добавить его в представление для получения события щелчка.

Чтобы найти представление по идентификатору в CustomNoti, вы можете сделать следующее в конструкторе.

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)
}
...