2011-01-10 10 views
1

こんにちは私のアプリは、3つのアクティビティの1つがダイアログです。私はこのコードを使用してこれをやったのAndroidManifest.xmlandroid dialogueの後ろに別のビューを開く

android:theme="@android:style/Theme.Dialog" 

また、アプリケーションは、それはまたの一つ開き、この行いただし際に、アプリケーションが表示されていない場合でも、ダイアログボックスを開くことができるサービスを提供していますその他の活動はバックグラウンドで行われます。このアクティビティを停止して現在のアクティビティの前にダイアログを開くようにする方法はありますか(アクティビティが別のアプリケーションからのものであっても)。

おかげで、 ng93

答えて

0

iは、理想的ではないダイアログ活動を開く前にすべての私のアプリのアクティビティを閉じてしまったが、私が解決

1

あなたが別のアプリケーションの活動の前に何かを表示することはできません。 「正面」はやや曖昧なので、アプリケーションで別のアプリケーションと同時に画面を共有することはできません。

私が理解しているように、Androidのデザインは、画面上に何かをしているときには、アプリのプロセス/タスクがフォアグラウンドに集中しているため、そのタスクの他のアクティビティに焦点を当てる必要があります。これは、アプリケーションにフォーカスがある間、他のアプリケーションがUIフォーカスで実行されていないことを意味します。

これは、たとえば、あなたのアプリがアクティビティを起動したときに、あなたのアプリのスタックにフォーカスを合わせ、新しいアクティビティ(この場合はダイアログボックス)をアプリのスタックの上に置きます。その結果、ダイアログが表示されている間に「戻る」を押すと、以前に表示されたアクティビティに戻ります。以前のアクティビティがスタックから削除された場合、 'back'は以前に画面に表示されていたアプリケーションに移動します。

のようなスタックをクリアする方法があります:あなたは、スタックをクリアしたい、またはあなたかもしれないあなたのシナリオに応じてhttp://developer.android.com/reference/android/content/Intent.html#FLAG_ACTIVITY_CLEAR_TOP


は、ユーザーがダイアログを閉じたアプリは「出口」かもしれません。さらに、ダイアログアクティビティはonBackPressedをオーバーライドできるので、ユーザーが「戻る」を押すとアクティビティがアプリケーションを終了し、ユーザーはダイアログの前に行っていたことに戻ります。活動やスタックのための

さらに読書:http://developer.android.com/guide/topics/fundamentals.html#acttask

+0

私はスタックをクリアすることが私がする必要があると思うが、FLAG_ACTIVITY_CLEAR_TOPは機能しません。スタックをクリアする別の方法はありますか?歓声 – ng93

+0

FLAG_ACTIVITY_CLEAR_TOPは、インテントを受け取ったアクティビティの上のアクティビティスタックをクリアするように機能します。アクティビティA(ルート)、B、C、およびDが与えられた場合、CLEAR_TOPフラグを使用してアクティビティBをコールすると、CとDが削除され、Bがトップアクティビティになります。あなたのアプリケーションでは、A、B、C、D、E(あなたの新しいダイアログアクティビティ)となる新しいアクティビティを呼び出すと仮定します。 Eの上に何もないので、何もクリアされません。スタックをクリアするには、アクティビティAをCLEAR_TOPで呼び出し、そのアクティビティでstartActivityForResultを使用してダイアログを起動させます。つづく... – brack

+0

それでは、ルートアクティビティで何をする必要があるのでしょうか(それを "A"と呼んでいます)、ダイアログアクティビティがいつ終了したかを知るためにonActivityResultをチェックしてください。ダイアログが終了したら、アクティビティAでfinish()を呼び出すと、アプリケーションのタスクが終了し、以前のアプリケーションに戻ることができます。 – brack

4

後に機能イムを取得する唯一の方法のように思えますこれには、AndroidManifest.xmlのダイアログに、

android:taskAffinity=".MyDialog" 

を追加します。その後、あなたの他のタスクとは関係なく、中断されたアクティビティを起動することなく表示できます。

関連する問題