Skip to content

Instantly share code, notes, and snippets.

@polson
Last active August 17, 2020 20:39
Show Gist options
  • Save polson/2a6473dceec72a3aa225c4a1f7e91d85 to your computer and use it in GitHub Desktop.
Save polson/2a6473dceec72a3aa225c4a1f7e91d85 to your computer and use it in GitHub Desktop.
class NormalActivity : AppCompatActivity(), NormalDialogFragment.NormalDialogListener {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_normal)
val button = findViewById<Button>(R.id.normalButton)
button.setOnClickListener { showNormalDialog() }
}
private fun showNormalDialog() =
NormalDialogFragment.newInstance("Normal Dialog")
.show(supportFragmentManager, "NormalDialog")
override fun showNegativeToast() =
Toast.makeText(this, "Negative button", Toast.LENGTH_SHORT).show()
override fun showPositiveToast() =
Toast.makeText(this, "Positive button", Toast.LENGTH_SHORT).show()
}
class NormalDialogFragment() : DialogFragment() {
interface NormalDialogListener {
fun showNegativeToast()
fun showPositiveToast()
}
companion object {
const val KEY_TITLE = "KEY_TITLE"
fun newInstance(title: String) =
NormalDialogFragment().apply {
arguments = Bundle().apply {
putString(KEY_TITLE, title)
}
}
}
private val title by lazy { checkNotNull(arguments).getString(KEY_TITLE) }
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
val listener = activity as NormalDialogFragment.NormalDialogListener
return AlertDialog.Builder(activity)
.setTitle(title)
.setMessage("This is a normal dialog")
.setPositiveButton("Continue") { dialog, which -> listener.showPositiveToast() }
.setNegativeButton("Go back") { dialog, which -> listener.showNegativeToast() }
.create()
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment