多少フライングしても問題ないか
サンプルコード
ConfirmDialog.kt
import android.app.AlertDialog import android.app.Dialog import android.content.DialogInterface import android.os.Bundle import android.support.v4.app.DialogFragment /** * Created by ninomae makoto. * @sample * var dialog = ConfirmDialog() * dialog.title = "タイトル" * dialog.msg = "メッセージ" * dialog.onOkClickListener = DialogInterface.OnClickListener { dialog, id -> * Log.d( "tag", "ok clicked") * } * dialog.show( supportFragmentManager, "tag" ) */ class ConfirmDialog : DialogFragment() { var title = "title" var msg = "msg" var okText = "OK" var cancelText = "cancel" /** ok押下時の挙動 */ var onOkClickListener : DialogInterface.OnClickListener? = null /** cancel押下時の挙動 デフォルトでは何もしない */ var onCancelClickListener : DialogInterface.OnClickListener? = DialogInterface.OnClickListener { _, _ -> } override fun onCreateDialog(savedInstanceState: Bundle?): Dialog { // Use the Builder class for convenient dialog construction val builder = AlertDialog.Builder(activity) builder.setTitle(title) .setMessage(msg) .setPositiveButton(okText, onOkClickListener) .setNegativeButton(cancelText, onCancelClickListener) // Create the AlertDialog object and return it return builder.create() } override fun onPause() { super.onPause() // onPause でダイアログを閉じる場合 dismiss() } }
使用方法
コメントに書いてあるコードに従ってダイアログを出したい箇所に記述
一応文言やボタン押下時の挙動などは全て変更可能
var dialog = ConfirmDialog() dialog.title = "タイトル" dialog.msg = "メッセージ" dialog.okText = "はい" dialog.cancelText = "いいえ" dialog.onOkClickListener = DialogInterface.OnClickListener { dialog, id -> Log.d(TAG, "ok clicked") } dialog.onCancelClickListener = DialogInterface.OnClickListener { dialog, id -> Log.d(TAG, "cancel clicked") } // supportFragmentManagerはAppCompatActivity(正確にはFragmentActivity)を継承したアクティビティで使用可 dialog.show(supportFragmentManager, "tag")
以下のように表示される(後ろのwebviewは気にしないこと)
これだけの情報があれば後はどうにでもなるのではないかと
表示部分のカスタマイズについてはそのうち書くかも