おはやし日記

特にテーマ無しの日記。

AlertDialogとToastだけのAndroidアプリ

最近Androidアプリ作りにハマっています。

家計簿アプリを鋭意建設中です

github.com

まあ、これについて語ろうとすると長くなるので、今回はお試しで作った「Dialogを出してToastを出すだけのアプリ」を紹介します

動作

f:id:o-treetree:20210226043245g:plain
動作画面

  • アプリを起動するとダイアログが表示されます(ActivityのUIが出てこないのがミソ)
  • ダイアログのボタンをクリックするとそれに対応してToast(小さく出てくるテキスト)が表示されます
  • 以上。

ソースコード

OnlyDialog.app

解説

AndroidManifest.xml

デフォルトと違うのは

<activity
        android:name=".MainActivity"
        android:theme="@style/Theme.AppCompat.Light.Dialog.Alert">

としているところ。色々ググって最初は別のを設定してみたのですが(何だったか忘れた)You need to use a Theme.AppCompat theme (or descendant) with this activity.とエラーが出るのでTheme.AppCompatの予測を漁ってこれを見つけました。

MainActivity.java

いつもはonCreateでsetContentViewしますが、今回は何もレイアウトを用意してないので設定しません。

AlertDialog

AlertDialog.Builder builder = new AlertDialog.Builder(this);で下準備。builderにsetTitleとsetMessageをして、PositiveButtonとNegativeButtonの設定をします。

builder.setTitle(dialog_title)
        .setMessage(dialog_message)
        .setPositiveButton("成功だ!", (dialogInterface, i) -> {
            Toast.makeText(this, "success!", Toast.LENGTH_SHORT).show();
            finish();
        })
        .setNegativeButton("失敗だ!", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialogInterface, int i) {
                Toast.makeText(MainActivity.this, "failure!", Toast.LENGTH_SHORT).show();
                MainActivity.this.finish();
            }
        })
        .show();
setPositiveButton(ボタンのテキスト, 押した時の動作)

押したときの動作はラムダ式で書けます。↑ではPositiveとNegativeで、ラムダ式と匿名クラスの2通りで書いています。

最後にshow()をつけておけば『いろいろsetしてshowする』ということになります(ざっくり)

Toast

Toast.makeText(context, メッセージ, 表示時間).show();

まあ、見たままの感じです。特に細かい設定も無いので。

その他

Toastを表示した後、何もしないと半透明の空間が残ってしまって、バックボタンとかを押さないとホーム画面を触れないのでfinish();でActivityを終了させています。

おわり

ダイアログだけだすのってどうやるんだろうな〜って思ってやってみたらできました。というお話。

参考

トーストの概要  |  Android デベロッパー  |  Android Developers

プライバシーポリシー ・お問い合わせはこちら