почему диалог не отображается в Котлине? - PullRequest
0 голосов
/ 09 октября 2019

Я хочу создать диалоговое окно, когда нажимаю кнопку с плавающим действием. Но, когда я нажимаю кнопку, просто появляется сообщение Toast.

Это то, что я пробовал до сих пор:

    recyclerView.layoutManager = LinearLayoutManager(this, RecyclerView.VERTICAL, false)
    val users = ArrayList<User>()

    users.add(User("John", "USA"))

    val adapter = CustomAdapter(users)

    recyclerView.adapter = adapter

    fab.setOnClickListener {
        val dialog = Dialog(this)
        Toast.makeText(this, "It's working...", Toast.LENGTH_LONG).show()
        dialog.requestWindowFeature(Window.FEATURE_NO_TITLE)
        dialog.setContentView(R.layout.dialog_add)
        dialog.setTitle("Add person")
        dialog.setCancelable(false)

        val nameText = dialog.findViewById(R.id.name) as EditText
        val addressText = dialog.findViewById(R.id.address) as EditText
        val btnAdd = dialog.findViewById(R.id.btn_ok) as Button
        val btnCancel = dialog.findViewById(R.id.btn_cancel) as Button

        btnAdd.setOnClickListener{
            users.add(User(nameText.text.toString(), addressText.text.toString()))
            adapter.notifyDataSetChanged()
            dialog.dismiss()
        }
        btnCancel.setOnClickListener {
            dialog.dismiss()
        }
    }
}

Как мне изменить код, чтобы он отображал диалоговое окно, когда я нажимаю FAB?

ОБНОВЛЕНИЕ: Вы правы, ребята! Это работало очень хорошо после того, как я поместил dialog.show (). Спасибо.

Ответы [ 4 ]

2 голосов
/ 09 октября 2019

Вы забыли вызвать show () в диалоге. dialog.show ()

0 голосов
/ 09 октября 2019

После создания диалогового окна нам нужно вызвать метод show для отображения диалогового окна на экране

Добавить эту строку после создания диалогового окна dialog.show()

Пожалуйста, замените или добавьте этот код

recyclerView.layoutManager = LinearLayoutManager(this, RecyclerView.VERTICAL, false)
    val users = ArrayList<User>()

    users.add(User("John", "USA"))

    val adapter = CustomAdapter(users)

    recyclerView.adapter = adapter

    fab.setOnClickListener {
        val dialog = Dialog(this)
        Toast.makeText(this, "It's working...", Toast.LENGTH_LONG).show()
        dialog.requestWindowFeature(Window.FEATURE_NO_TITLE)
        dialog.setContentView(R.layout.dialog_add)
        dialog.setTitle("Add person")
        dialog.setCancelable(false)

        val nameText = dialog.findViewById(R.id.name) as EditText
        val addressText = dialog.findViewById(R.id.address) as EditText
        val btnAdd = dialog.findViewById(R.id.btn_ok) as Button
        val btnCancel = dialog.findViewById(R.id.btn_cancel) as Button

        btnAdd.setOnClickListener{
            users.add(User(nameText.text.toString(), addressText.text.toString()))
            adapter.notifyDataSetChanged()
            dialog.dismiss()
        }
        btnCancel.setOnClickListener {
            dialog.dismiss()
        }
    //add this line 
     //Call show() method to show dialog 
  dialog.show()
    }
}
0 голосов
/ 09 октября 2019

Вы должны вызвать show(), как показано ниже.

//...
dialog.setTitle("Add person")
dialog.setCancelable(false)
// ...
btnAdd.setOnClickListener{
    //...
}
btnCancel.setOnClickListener {
    dialog.dismiss()
}

//show dialog adding below line.
dialog.show();
0 голосов
/ 09 октября 2019

Вам нужно вызвать dialog.show (). Просто вызовите его в любом месте ниже dialog.setCancelable (false).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...