2012-02-28 17 views
1

私は答えを探していますが、適切なものを見つけることができませんでした。問題は、通常のアクティビティの上にダイアログテーマのアクティビティがあることです。ユーザーにテーマのアクティビティを読んで「OK」をクリックさせると、他の質問のために別のダイアログテーマのアクティビティに転送されたり、アプリケーションに参加できなくなります。だから、私はバックプレスでアプリケーションを終了したいだけでなく、私のアプリのコンテンツを明らかにするテーマ別のアクティビティを終了するのではありません。そんなことがあるものか?アプリケーションをプログラムで終了する

+0

あなたが説明してくださいすることができます。あなたの事例に最適なソリューションを見つけるためには、われわれの理解を深めてくれると確信しています。乾杯uは私がたい」と述べた原因 – Ewoks

+0

それは、ちょうどあなたがそれを達成しようとしているものをよりよく理解したかった...完全にカスタマイズされていると私が覚えている限りでは、私は通常のダイアログボックス – JustCurious

+0

沖で行うことができなかった多くの機能が含まれていますユーザーがテーマのあるアクティビティに対して「OK」をクリックしたり強制的に「OK」をクリックするように強制するか、「カスタムダイアログを使用する良い理由のように私に響きます」と入力することはできません。乾杯。 – Ewoks

答えて

2

finish()あなたのための完璧な仕事を行います。)

が、ダイアログがキャンセルできない作る。..

編集(問題の説明の明確化の後): 他の人がStartActivityForResultは、追加のトリックで、仕事ができる言ったように。

android:noHistory="true"または意向Intent.FLAG_ACTIVITY_NO_HISTORYためのフラグを設定する:ので、あなたのアプリケーション(DialogActivity1-> DialogActivity2)の設計方法の 、それはすべてあなたの特別なダイアログルック活動のため、AndroidManifestファイルに次の行を追加するために役立つかもしれませんDialogActivityNを開始する前に

両ライン(マニフェストまたはコードから)が、これはAndroidのスタックに滞在していないactitiviesようになりますので、あなたのMainActivityが戻って結果を取得する場合、それは最後のDialogActivityから生じることになり、その結果受け取っに応じて、よりあなたはどちらかfinish()または継続することができますMainActivityの実行...と

uは、このような活動を開始仕上げをコールする必要はありません

()はそれらを破壊するために、uがちょうど新しい活動を開始し、彼らがスタックから消えてしまいます。もちろん、あなたのケースでは、最後のDialogActivityはStartActivityForResult()で始まり、前の段落で説明したように、MainActivityは受け取った結果に基づいて何かを行います。

しかし行ったユーザーは、開始アプリケーションでこれらのダイアログを通じて数回行く私は良い習慣を検討すると、それはユーザーがちょうどあきらめ作り、いくつかのあまり迷惑なアプリのために行くことができるものではありません。

は、あなたがそれを解決することを願っています(それが概念について再考するだけの私からのアドバイスですが、この間違ったを得ることはありません);)乾杯

+0

'finish()'は、私のアプリの内容を明らかにするダイアログをテーマにした作業を終了します。 – JustCurious

+0

あなたはそれが実際のダイアログではなくアクティビティ(ダイアログのように見えます)を作った本当の理由は何ですか? – Ewoks

2

あなたがstartActivityForResult()とあなたの対話活動を開始した場合、あなたはから結果RESULT_CANCELEDを送り返すことができますダイアログを開き、これを受け取ると(主な活動では)finish()と呼んでいます。

+0

良いアイデア!私はそれを試してみます – JustCurious

+0

...私のダイアログは実際には2つのページングされたものです。したがって、2つのアクティビティがあります。私は最初のもののためにそれをすることができますが、次の活動はどうですか? – JustCurious

+0

その場合、私はおそらく目的の効果を達成するためにフラグメントを使用しますが、それがオプションでない場合は、「OK」がクリックされたかどうかを示す最初のアクティビティに値を戻す方法を見つける必要があります。おそらく 'SharedPreference'を使用しています。これは、アプリケーションが最後に何を選んだのかを覚えておくことができるからです。 – Jave

1

ActivityforResultについて知っていれば、方法は簡単です。まずstartActivityforResultメソッドでダイアログアクティビティを開始する必要があります。ダイアログアクティビティが戻るボタンで閉じると、Set resultで閉じる必要があります。 OnactivityResultメソッドのstartアクティビティでは、setResultが以下のようになっていない場合、同じアクティビティを検出し、同じアクティビティを閉じる必要があります。あなたはポイントを得ることを願っています。その「ダイアログ」は本当ダイアログではなく、活動がダイアログとしてテーマにした理由を

関連する問題