2011-11-11 2 views
2

私はAndroidの半初心者です。私は、Androidの非モーダルダイアログを使用することに関して "大きなイメージ"を確認していません。私は多くの種類のダイアログを表示することができますが、「OK」をクリックすると結果の使用方法がわかりません。ダイアログが表示されたときに、呼び出し側のUIタスクがうまくいくことは明らかです。明らかに、重要ではない対話の目的は、さらなる処理のためにユーザーから何らかの情報を得ることですが、メインスレッドは既に移動しています。では、実際に何かを行うには、ダイアログデータの結果をどのように使用しますか?Androidの(非モーダル)ダイアログの使い方は?

これを行うために私が見ることができる唯一の方法は、結果の処理を「OK」ボタンのonclickハンドラに置くことですが、それは私の考え方にとってむしろ面倒で不自然なようです。それにもかかわらず、ダイアログの結果を処理する「通常かつ慣習的な」方法ですか?より良い方法がありますか?または私は何かを大量に逃していますか?

具体的な例として、リストビューにファイルのリストを表示し、削除するファイルのリストを選択したいとします。私はonclickハンドラにdelete-codeを入れますか?

答えて

3

はい、それはAndroidのダイアログで作業する「通常の慣習的な」方法です。結果をリスナーで処理します。詳細は、dialogs guideまたはdate picker dialog sampleの例を参照してください。

アクティビティのダイアログを作成するとき(アクティビティのテーマをproperに設定する必要があります)、ダイアログアクティビティのリスナーで処理を実行できます。または、値を親アクティビティーに戻して、onActivityResultコールバックで処理することもできます。

リスナーで実行するコードは、メインスレッドで実行されるため、短くすばやくする必要があります。ユーザーに待たせないでください!処理に時間がかかる場合は、バックグラウンドで処理してください。

Androidのモーダル対ノンモダル(モードレス)ダイアログに対する1つのメモ。デフォルトでは、すべてのダイアログ(およびダイアログとして表示されるアクティビティ)はモーダルです。適切なウィンドウフラグを設定することにより、モードレスダイアログ(およびアクティビティをダイアログとして表示)を作成できます(詳細はthis質問と回答を参照してください)。

関連する問題