少し前に作ったものの、紹介エントリを書いていなかったことに気づき今更ながら書いてみる。。。
SimpleAlertDialog-for-Androidという、
Androidでダイアログを簡単に作成できるライブラリを公開しています。
この手のライブラリは色々あるが、特長は以下の通り(READMEから抜粋)。
- APIレベル4 (Android 1.6 Donut)からレベル19 (Android 4.4 KitKat) で利用可能です。
- Holoスタイルのダイアログを全てのバージョンで使えます。
AlertDialog.Builder
のようにシンプルなインタフェースです。- 基本的なイベントをハンドリングするコールバックが用意してあります。
- ダイアログのライフサイクルは、親となるActivityやFragmentと同期しているため、
IllegalStateException
に悩まされることはありません。 - APIレベル11以上での通常の
Activity
と、android-support-v4ライブラリのFragmentActivity
の両方をサポートしています。
ダイアログの取り扱いは慣れないと意外と難しく、
スリープから復帰したときにIllegalStateException
でクラッシュする
ということも普通に起こる。
また、Android Holo Colorsを使って
アプリのカラーテーマに合わせてHoloスタイルをカスタマイズしても
ダイアログのラインや部品が変わらなかったりする。
というわけで、SimpleAlertDialogは
ダイアログ共通の問題を吸収し、アプリデザインの統一感を持たせやすくするためのライブラリ。
基本的に古いAlertDialogと同じ扱い方なので、
例えば、ダイアログを表示したい場所で以下のように書けば表示できる。
new SimpleAlertDialogFragment.Builder()
.setMessage("Hello world!")
.setPositiveButton(android.R.string.ok)
.create().show(getFragmentManager(), "dialog");
配色などはスタイルとしてXMLで指定できるので、
以下のようにラインをグラデーションに変えることもできる。
3 件のコメント:
はじめまして。
SimpleAlertDialog、大変重宝しております。有用なライブラリの開発、ありがとうございます。
使っている中で気になった点がありますのでご教示ください。カスタムビューに対して何らかのパラメータを与えたい場合、どうするのがセオリーなのでしょうか。
例えば、ViewProvider#onCreateViewの中でInfrateするViewにIDとPasswordという風にEditTextが複数含まれていて、それらに可変の値を入れたい場合などです。
コメントありがとうございます。
すっかりお返事が遅くなってしまいすみません。
可変の値というのは、EditTextの初期値ということでしょうか。
ViewProvider#onCreateView()などは実際にダイアログのビューが表示される都度呼び出されるようになっていますので、その中で例えばActivityのフィールドの値を読み取ってEditText#setText()に渡す、などとすればOKです。
(回答になってますでしょうか?)
Activityのフィールドを使って値を受け渡すのがセオリーなんですね。
Activityのフィールド経由ではなく、メソッドの引数なりBundleなりで直接的に値を渡す方法があるのかも、と思って質問させていただきました。
一般的な使い方が分かってすっきりしました。ありがとうございます。
コメントを投稿