diadia

興味があることをやってみる。自分のメモを残しておきます。

ダイアログを実装する

ダイアログについて

まずダイアログとは、画面上に出てくるボックスのことで何かを知らせるとともに、ユーザーに複数のボタンを押してもらうことでアクションを起こしてもらうものである。
トーストもユーザーに何かを通知する機能は同じだが、通知するのみでユーザーがアクションを起こせないという点が異なる。

ダイアログを実装する

実装する概要、イメージ

  1. ダイアログのボックスを作る
  2. どこかをタップして表示させる仕組み(リスナ、ハンドラ)を作成する
  3. リストビューにリスナを設置する
ダイアログのボックスを作る

ダイアログのボックスを作るとは、ダイアログのタイトルとかメッセージ、ボタンを作ることを意味する。
ただし、自分自身で直接ダイアログのボックスを作成するわけではない。自分自身で行うことはダイアログビルダを生成し、そのビルダにどのようなダイアログを作りたいのか教え、ビルダのメソッド(create)を通じてダイアログ(ボックス)を作成する。したがって、ダイアログを作成するとは、ダイアログビルダインスタンスを生成し、ビルダのcreateメソッドを実行することを意味する。

具体的なコードは以下のとおりである。

#ダイアログのボックスを作成する方法

#ダイアログビルダを生成する
val builder = AlertDialog.Builder(activity)


#ダイアログビルダを通じてダイアログインスタンスを生成する
val dialog = builder.create()

しかし待ってほしい。どこにこのビルダのコードを記述するのか。それもきちんと決まっているようだ。
ビルダを記述する場所は、DialogFragmentを継承したクラスの中で記述する。そしてビルダでダイアログを記述したあとにはそのダイアログを返すことも決まっている。ということで、以下のようになる。

#ダイアログのボックスを作成する方法(ビルダの記述する場所も含めて)


class MyDialogFragment : DialogFragment(){
    override fun onCreateDialog(savedInstanceState:Bundle?):Dialog{
    
    //ダイアログビルダを生成
    val builder = AlertDialog.Builder(activity)
    
    //ダイアログのタイトルを設定
    builder.setTitle(R.string.dialog_title)
    
    //ダイアログのメッセージを設定
    builder.setMessage(R.string.dialog_message)
    
    //ダイアログのポジティブボタンを設定
    builder.setPositiveButton(R.string.dialog_btn, DialogButtonClickListener())
    
    //ダイアログビルダを通じてダイアログインスタンスを生成する
    val dialog = builder.create()
    return dialog
    }
}

 

リストビューにリスナを設置する

リストビューにリスナを設置するのは、class MainActivity: AppCompatActivity(){}内に以下の内容を追記する。

lv_obj.onItemClickListener = MyListener()