最近Androidアプリ作りにハマっています。
家計簿アプリを鋭意建設中です
まあ、これについて語ろうとすると長くなるので、今回はお試しで作った「Dialogを出してToastを出すだけのアプリ」を紹介します
動作
- アプリを起動するとダイアログが表示されます(ActivityのUIが出てこないのがミソ)
- ダイアログのボタンをクリックするとそれに対応してToast(小さく出てくるテキスト)が表示されます
- 以上。
ソースコード
解説
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を終了させています。
おわり
ダイアログだけだすのってどうやるんだろうな〜って思ってやってみたらできました。というお話。