Kotlin android ラジオボタンタイプのDialogを実装する
ダイアログの基本的な実装の仕方
実装内容
例えばユーザーがログインする際にアカウントを一覧させる。ユーザーはそこからあるアカウントを選び、ログインを実行する。 この場面をダイアログを使って実装する。DialogFragmentの継承でどの様に設計がテーマとなる。
ラジオボタンの実装方法
ボタンの種類は以下の通りになる。
これらのボタンはAlertDialogに備え付けられる前提があるようだ。 排他的選択リストを作成するには、setItems() メソッドを使う。複数選択アイテム(チェックボックス)のリストを実装するには、setMultiChoiceItems() メソッドを使う。排他的選択アイテム(ラジオボタン)のリストを実装するには、setSingleChoiceItems() メソッドを使う。
今回は、ラジオボタンのリストを生成するのでsetSingleChoiceItems() メソッドを使うことになる。
class SelectUserDialogFragment:DialogFragment(){ override fun onCreateDialog(savedInstanceState: Bundle?): Dialog { val context = SingletonContext.applicationContext() val am: AccountManager = AccountManager.get(context) val accounts = am.getAccountsByType("com.example.my_test_account_type") var accountsList:Array<String> = arrayOf() for (account in accounts){ accountsList += account.name println(account.name) } var selectItem:Int? = null val builder = AlertDialog.Builder(activity) //タイトルの設定 builder.setTitle("ログインするユーザーを選んでください") //ラジオボタンを設置する builder.setSingleChoiceItems( accountsList,-1,{ dialog, which -> selectItem = which }) //ログインボタンの設定 builder.setPositiveButton("Log in this user", { dialog, which -> print("セレクトアイテムを表示") println(selectItem) }) val dialog = builder.create() return dialog } }