2011-07-28 31 views
2

私は、onActivityResultを使用してビルトインカメラを開始するアクティビティを持っています。写真を撮った後、私は自分のアプリケーションに戻り、写真を撮るかどうかを尋ねるポップアップを表示します。それは正常に動作しますが、写真を撮った後、組み込みのカメラアプリの「保存」ボタンを押してから、私はホームボタンを押します。私のアプリケーションに戻ると、私のアクティビティは表示されますが、アクティブではありません。表示されるべきポップアップはそこにありますが、私はそれを見ることができません。戻るボタンを押してポップアップをキャンセルすると、私の活動は再びアクティブになりますが、ポップアップをキャンセルするユーザを許可したくないので、この現象が発生したときに私のアプリケーションを使用することはできません。 ..警告ダイアログが表示されますが、表示されません。

質問は、表示されている場合、常にダイアログの上部に表示されますか?原因は、ユーザーがそれと対話するのを待っている、活動の背後にあるようだ...

ありがとう!

+0

http://stackoverflow.com/質問/ 13928591/a-strange-behavior-of-android-activities-fragments-and-intent私も同様の問題を抱えています... – aProgrammer

答えて

3

私はこの問題を解決するために見つけた最も簡単な方法は、活動中のダイアログの寿命を追跡し、活動のためのonResumehide()/show()を行うことです。この解決策は一度に1つのDialogにしか機能しませんが、必要に応じてさらに多くのものに容易に適応できます。

1)アクティビティにDialog.OnDismissListenerを実装してください。 onCreateDialog()で作成された各ダイアログの

if(currentDialog != null) { 
    currentDialog.hide(); 
    currentDialog.show(); 
} 

4)、追加します:onResume()アドオンで

private Dialog currentDialog = null; 

3):
2)あなたのActivityに現在Dialogのインスタンス変数を追加します

dialog.setOnDismissListener(this); 
currentDialog = dialog; 

5)最後に、次を追加してください。

@Override 
public void onDismiss(DialogInterface dialog) { 
    if(dialog == currentDialog) 
     currentDialog = null; 
} 

それは私のためにそれを修正するようです。

1

あなたのダイアログはキャンセル可能です。 dialog.setCanceleabe(false)を試してください。onResumedialog.show()(アクティビティを再開した後に表示されるようにしてください)。

+0

返信いただきありがとうございます。私はあなたが言ったことを試みました。はい、ダイアログはキャンセルできませんが、showメソッドがonResumeで呼び出されても、それは画面に表示されません。 – Finuka

0

旧質問、私は知っているが、あなたはタイトルを追加する必要があります をレイアウトは、高さを持っているか、それが0 * 0にダウンスケールすることができます幅れない場合は - >目に見えない

関連する問題