Androidでダイアログ表示を数行でできるライブラリが便利だった

昔は Android もダイアログ表示が楽だったけど、
今ダイアログ表示しようとすると 意外と面倒くさい手順になってます。

▼  こういう感じで煩雑

  1. FialogFragmentクラスを継承して
  2. その中でダイアログの制御をして
  3. Activityとかでダイアログ表示

昔は AlertDialog  単体でも使えてたけど、メモリリークを防ぐために DialogFragment  を使うことが推奨になっているみたいですね。

でも「コードが冗長になるし、もっとスマートに書きたい」みたいに思ってました。

そんな時に SimpleAlertDialog という使いやすいライブラリ発見

最低限のシンプルさで便利だったので、
この SimpleAlertDialog の使い方とか色々まとめてみます。

まず SimpleAlertDialog で普通のダイアログを表示してみる

まずは何の変哲もない メッセージダイアログ表示 にチャレンジ

導入手順も合わせて紹介すると、次の手順でできました。

1.build.gradleにライブラリを追加

まずモジュールレベルの build.gradle にライブラリ追加

▼ この1行を書き加えるだけ

そしたら 【Async NOW】 を押してプロジェクトを同期(Android Studio の場合)

ライブラリの導入自体はたったこれだけです。

2.SimpleAlertDialogFragment を作って表示

このライブラリには SimpleAlertDialogFragment  が用意されてます。

単純に DialogFragment  を継承しただけだけど、これがスゴク便利です。

なぜならこれ1つで色々なダイアログ種類に対応できるから

  • メッセージダイアログ
  • リスト選択型ダイアログ
  • アイコン付きダイアログ
  • テキスト入力ダイアログ
  • その他色々・・・

今回は一番オーソドックスな "はい" or "いいえ" ボタンだけついたダイアログを作ってみます。

その場合、ダイアログ呼び出し手順は次みたいな感じです。

 

1.まず SimpleAlertDialogFragment  インスタンス作成&表示

2.ボタン用のインターフェースを Activity に実装

3.Activity内でボタン用メソッドをオーバーロード

Activityにダイアログ用メソッド(はいボタン用は onDialogPositiveButtonClicked  、いいえボタン用は onDialogNegativeButtonClicked  )をオーバーライドするのが大事なポイント

それ以外は普通の AlertDialog とほぼ変わらないと思います。

表示されたメッセージダイアログはこんな感じ

それで今作ったメッセージダイアログを表示してみました。

▼ そのダイアログがコチラ

SimpleAlertDialogで表示したメッセージダイアログの例。こういうのが DialogFragment 継承なしで作れて便利

さっき書いたコードのように "YES" を押すと onDialogPositiveButtonClicked  コールバックが呼ばれ、 "NO" を押すと onDialogNegativeButtonClicked  コールバックが呼ばれます。

あとは普通のアラートダイアログとほぼ同じですね。

ついでにリストダイアログも作ってみた

ついでに リストダイアログ表示 も試してみたので紹介

普通に選択ダイアログを作ろうとすると、 ArrayAdapter  とか ListView  とか・・・色々拡張しなくていけなくて超面倒くさいですよね。アレは本当に開発意欲をガリガリ削がれる

でもこのライブラリなら一切そういうの不要で作れちゃいます。

そのリストダイアログの作り方は以下の通り

 

1.まず SimpleAlertDialogFragment  を作成&文字列リスト渡す

2.Activityにダイアログ用インターフェースを実装

3.Activity内でメソッドオーバーライドして結果受け取る

オーバーライドした onItemClick  内でどのアイテムが選択されたか取得可能

ただし配列のインデックス番号が返されることに要注意です。

実際に表示してみたリストダイアログの見た目

今作ったリストダイアログを実機で表示してみました。

▼ その結果がコチラ

SimpleAlertDialogで表示したリストダイアログの例。こういうがListViewとかArrayAdapterとか一切なしで作れる

ちゃんとリストに渡した文字列配列がリスト表示されてます。

その上 ListView  とか ArrayAdapter  とか  カスタムデータ も一切作る必要ないから楽ですね。

凝ったダイアログを作る必要ないなら、SimpleAlertDailog で十分な気がする

以上、Androidでダイアログ表示できるライブラリの紹介でした。ではまた

Shareこの記事をシェアしよう!

Commentsこの記事についたコメント

4件のコメント
  • ちみ

    作ってみました。
    このダイアログの外部(もとのアクティビティの部分)をタップすると、ダイアログが消えてしまいますが、なにかまちがえていますか?
    現状ですとダイアログとしては使えないです。

    ちなみに、最初の例のコード .setRequestCod(12345) は ‘e’が足りませんでした。
    2番めのリスト形式のダイアログは、リスト表示されず、タイトル部分だけしか表示されませんでした。

    (記入したEmailは捨てあどです。)

    8月 17, 2020 5:04 pm
    • ぴー助

      何が間違えているかはコメントだけでは分かりません。まずは記事通りの手順を試されることをオススメします。それでも表示されない場合、ご自身で期待する動作にならない原因を調べることが必要ですね。

      最初の例コードの .setRequestCod(12345) ですが、 e が足りないのに気づきませんでした・・・早速訂正しておきます。コメントでのご指摘ありがとうございました!

      8月 17, 2020 5:48 pm
  • ちみ

    はやい返答ありがとうございます。
    聞き方が悪かったようです。
    間違えるほどの手順やコードはありませんが、お答えからすると、ぴー助さんのもとでは私が指摘したような動作にはならなずに、ダイアログ(モーダル)として使えるということなんですね。

    8月 17, 2020 9:35 pm
    • ぴー助

      恐らくそういうことですね。環境/設定/他コード的な要因によって期待する動作にならないことがある・・・そこがアプリ開発の難しいところなのかもしれません。

      8月 18, 2020 7:54 am

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA


このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください