2

私は Android の初心者であり、Android の非モーダル ダイアログの使用に関する「全体像」がよくわかりません。さまざまな種類のダイアログを表示できますが、[OK] をクリックした後に結果を使用する方法がわかりません。ダイアログが表示されると、呼び出し元の UI タスクが順調に進むことは明らかです。明らかに、重要なダイアログの目的は、さらに処理するためにユーザーから何らかの情報を取得することですが、メイン スレッドは既に先に進んでいます。では、ダイアログ データの結果を使用して実際に何かを行うにはどうすればよいでしょうか。

これを行う唯一の方法は、結果の処理を [OK] ボタンの onclick ハンドラーに入れることですが、私の考え方では、それはかなりぎこちなく、見苦しいものに思えます。それにもかかわらず、それはダイアログの結果を処理する「通常の慣習的な」方法ですか? より良い方法はありますか?または、何かが大幅に不足していますか?

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

4

1 に答える 1

3

はい、これが Android ダイアログを操作する「通常の慣習的な」方法です。リスナーで結果を処理します。ダイアログ ガイドの例またはドキュメントの日付ピッカー ダイアログ サンプルを参照してください。

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

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

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

于 2012-04-04T00:28:00.293 に答える