Невозможно инициализировать кнопку в диалоговом окне в Котлине

У меня есть слушатель с плавающей кнопкой Action с AlertDiaolog внутри. И я хочу использовать свои кнопки из XML. И если я хочу написать onClickListener() для них.

Поэтому в Java я должен инициализировать его так:

 butAdd = (Button)dialog.findViewById(R.id.btn_add) butAdd.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //Some code } 

Но когда я пытаюсь использовать:

 var butAdd = dialog?.findViewById(R.id.btn_add) as Button; 

в Котлине это неверно

Итак, какие-нибудь предложения, как это исправить? Что случилось с слушателями?

Вот мой код Floating Action Button:

 fab?.setOnClickListener { diaolg = AlertDialog.Builder(this@Cards) val linearlayout = getLayoutInflater().inflate(R.layout.add_password, null) diaolg?.setView(linearlayout) ?.setTitle("Add a new password") ?.setCancelable(true) var login = findViewById(R.id.login) as EditText var password = findViewById(R.id.password) as EditText var title = findViewById(R.id.title) as EditText var butAdd = diaolg?.findViewById(R.id.btn_add) as Button var butCancel = diaolg?.findViewById(R.id.btn_cancel) as Button butAdd.setOnClickListener(View.OnClickListener { fun onClick(v:View){ } }) butCancel.setOnClickListener(View.OnClickListener { fun onClick(v:View){ } }) diaolg?.create() diaolg?.show() } 

найдите идентификатор, используя

  var butAdd = linearlayout.findViewById<Button>(R.id.btn_add) as Button; 

В любом классе, в котором вы находитесь, нет метода findViewById . Вы должны findViewById на раздутом макете, так что:

  var login = linearLayout.findViewById(R.id.login) as EditText 

Кроме того, я не думаю, что вам нужно иметь ? в диалоговом окне он не может быть нулевым. Кроме того, я бы сделал ваши представления val s вместо var s.

импортировать эту строку в свою активность

 <Button android:id="@+id/btn_submit" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="submit" /> 

импортировать эту строку в свою активность

// Использование R.layout.activity_main из основного источника

// activity_main – это имя вашего макета файла

импортировать kotlinx.android.synthetic.main.activity_main. *

  btn_submit.setOnClickListener { Toast.makeText(this, "hello", Toast.LENGTH_LONG).show(); } 

Его работа для меня.