【Android】ダイアログ表示 ~ 基本編 / アラートダイアログ ~

■ はじめに

Android の ダイアログ表示について、学ぶ。

■ サンプル

Kotlin

1)DialogFragmentクラスを継承したクラスを作成する
2)1)のクラスに対して、onCreateDialogをオーバライドして
  その中でAlertDialogを作成する
3)1)のインスタンスを作成する
4)3)をshow() する

SimpleDialogFragment.kt

import android.app.AlertDialog
import android.app.Dialog
import android.os.Bundle
import android.widget.Toast
import androidx.fragment.app.DialogFragment

class SimpleDialogFragment : DialogFragment() {
    override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
        val context = this.context
        if (context == null) {
            return super.onCreateDialog(savedInstanceState)
        }
        val builder = 
            AlertDialog.Builder(context).apply {
            setTitle("Title : Hello")
            setMessage("Message : Message")
            // OKボタン
            setPositiveButton("OK!") { dialog, id ->
                Toast.makeText(
                    context,
                    "Select OK!!!",
                    Toast.LENGTH_SHORT).show()
            }
            // キャンセルボタン
            setNegativeButton("Cancel") { dialog, id ->
                Toast.makeText(
                    context,
                    "Select Cancel...",
                    Toast.LENGTH_SHORT).show()
            }
        }

        return builder.create()
    }
}

activity_main.xml

 * button x 1 を画面に追加

MainActivity.kt

// ...略...

        button.setOnClickListener {
            var dialog = SimpleDialogFragment()
            dialog.show(
                supportFragmentManager,
                "alert")
        }

Java

* OKボタンのダイアログを表示する
 => AlertDialog を使う
* 結構、メンドくさい。

activity_main.xml

 * button x 1 を画面に追加

MainActivity.java

import android.os.Bundle;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.Intent;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class MainActivity extends Activity implements OnClickListener {
    private Button button1;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        this.button1 = (Button) findViewById(R.id.button1);
        this.button1.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
        case R.id.button1:
            // ★ここで表示★
            AlertDialog.Builder dialog = new AlertDialog.Builder(this);
            dialog.setTitle("Hello, Title!");
            dialog.setMessage("Hello, Dialog Message!");
            // ★OKボタン★
            dialog.setPositiveButton("OK", null);
            dialog.show();
            break;
        }
    }
}

 参考資料

kotlin
https://101010.fun/posts/android-try-dialog.html
https://qiita.com/hokutonikukyu/items/ebbc0318c07035e04bf7
Java

色々なサイトを見たが、以下が一番分かりやすい

http://blog.oukasoft.com/%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%A0/%E3%80%90android%E3%80%91%E3%83%80%E3%82%A4%E3%82%A2%E3%83%AD%E3%82%B0%EF%BC%88alertdialog%EF%BC%89%E3%82%92%E8%A1%A8%E7%A4%BA%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/

関連記事

ダイアログ表示 ~ 入門編 / トースト・Toast ~
https://dk521123.hatenablog.com/entry/2013/10/14/002656
ダイアログ表示 ~ 基本編 / YES/NO/CANCELボタン ~
https://dk521123.hatenablog.com/entry/2013/10/06/122942
ダイアログ表示 ~ 基本編 / リスト選択 ~
https://dk521123.hatenablog.com/entry/2013/10/07/005850
ダイアログ表示 ~ 基本編 / チェックボックスラジオボタン
https://dk521123.hatenablog.com/entry/2013/10/09/001500
ダイアログ表示 ~ 基本編 / 日付・時間ダイアログ ~
https://dk521123.hatenablog.com/entry/2020/07/26/000000
ダイアログ表示 ~ 基本編 / Notification(通知) ~
https://dk521123.hatenablog.com/entry/2020/08/01/000000
アラーム機能を実装するには
https://dk521123.hatenablog.com/entry/2020/07/14/000000