Here's the AlertDialog inside the MainActivity onCreate method:
import kotlinx.android.synthetic.main.dialog.*
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
fab.setOnClickListener { view ->
AlertDialog.Builder(this@MainActivity)
.setView(LayoutInflater.from(this@MainActivity).inflate(R.layout.dialog, null))
.setPositiveButton("OK") {dialog, i ->
Toast.makeText(
this@MainActivity, dialogEditText.text, Toast.LENGTH_SHORT)
.show()
dialog.dismiss()
}.show()
}
}
}
Here's the dialog layout
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<EditText
android:id="@+id/dialogEditText"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
</EditText>
</RelativeLayout>
However, in the end, I got this error:
java.lang.IllegalStateException: dialogEditText must not be null
But I filled the input... What's wrong here?
This is the solution what I found. Thanks for helping!
val view = LayoutInflater.from(this@MainActivity).inflate(R.layout.dialog, null)
AlertDialog.Builder(this@MainActivity)
.setView(view)
.setPositiveButton("OK") {dialog, i ->
Toast.makeText(
this@MainActivity, view.dialogEditText.text, Toast.LENGTH_SHORT)
.show()
dialog.dismiss()
}.show()