2011-12-20 20 views
4

アンドロイドダイアログを使用してカスタマイズするのではなく、多くの開発者が自分のアクティビティをテーマとしてダイアログを選択しています。カスタムダイアログまたはダイアログのテーマアクティビティ

インターネットでこの回答を検索しましたが見つかりませんでした。

誰かが私にプロのテーマを教えてもらえますか?もちろん、それはあなたにもっと自由を与えますが、標準的なダイアログをカスタマイズするのを避けるためのスタイリングの理由はありますか?

私は、ダイアログでフラグメントを再利用する必要があったので、私のニーズを満足させるテーマのアクティビティを作成しましたが、テーマのアクティビティから結果を取得する際に問題に遭遇しています。

ありがとうございます。 Bram

答えて

1

1)startActivityForResultを使用してアクティビティを開始します。
2)ダイアログスタイルのアクティビティを閉じる前に、必要なデータをインテントエクストラに追加し、SetResult(int、intent)を使用して保存します。
3)結果を処理するには、保存されたインテントからデータを取得する親アクティビティのアクシビティ結果にコードを追加します。

probs。

はい、重いカスタムロジックを「ダイアログ」に追加する必要がある場合は、スタイル付きのアクティビティを使用することをおすすめします。 簡単なアラートの場合は、ダイアログを使用します。

+0

まずはお返事ありがとうございます。私はstartActivityForResultメソッドについて知っています。しかし、私はまた、私のダイアログにGridViewsがあります。グリッド内のボタンをクリックすると、ボタンの情報を親アクティビティに送信する必要があります。私はオブジェクトのリストを送る必要があるかもしれません。これは、多くのデータをアクティビティ間でやりとりすることではありませんか? – Bram

+0

なぜこれが必要ですか?ボタンを押した後にダイアログを閉じますか?いいえ - 子アクティビティにコードを移す方が良いでしょうか? – woodshy

+0

はい、私は問題は解決しましたが、クラスにフラグメント内のイベントをリッスンさせる(フラグメントはダイアログアクティビティ内にあります)。リスニングクラスは、ボタンがクリックされるとイベントを取得し、クリックされたボタンへの参照も取得します。イベントが受信されると、フラグメントを呼び出してダイアログを閉じます(getActivity.finish())。したがって、構造は:(開始呼び出しを与える)アクティビティ>リスニングクラス>ダイアログアクティビティ>フラグメントです。あなたの助けをありがとう。私はあなたの答えを受け入れるでしょう。 – Bram

1

カスタムダイアログを簡単に作成できます(onCreate、onPause、画面回転などを処理する必要はありません)。オーバーヘッドが少なくなります。

ダイアログよりも複雑なものを表示したくない場合は、カスタムダイアログを使用する必要があります。

関連する問題