2011-01-17 9 views
1

AlertBuilder.createなどを使用してダイアログを定義するアクティビティAがあります。このアクティビティは、showDialog(dialogID)を使用してダイアログを呼び出します。 dialogIDは宣言され、すべてのクラス/アクティビティで認識されます。アクティビティAですべてが正常に機能します。他のアクティビティからダイアログを呼び出す

私の質問は、この同じダイアログ(showDialog(dialogID))を呼び出す際に、別のアクティビティ(アクティビティB)からアプリケーションがクラッシュすることです。誰も助けることができますか?

複数のアクティビティからダイアログを呼び出すにはどうすればよいですか?

ありがとうございます。

アンディ

答えて

0

私はあなたの新しい活動で同様のエントリポイントをフックすることなく、あなたが欲しいものを達成することができないと思います。

にShowDialog(int型のID)が

IDは、それを起動するアクティビティ内で一意です。したがって、2つのアクティビティAとBの両方がshowDialog(1)を呼び出した場合。これは、誰かがonDialogCreate()メソッドとonPrepareDialogメソッドで同じコードパスをコーディングしていない限り、それぞれ異なるものになります。したがって、元のアクティビティのonDialogCreateでは、そのコードは両方のアクティビティに存在する必要があります。与えられたコンテキストに基づいて内部的にすべての初期化を行い、その上でshow()を呼び出す新しいDialog型を作成すると、時には方法を得ることができます。この解決策の問題は、通常、コンテキストがもはや有効ではなく、そのコンテキストを閉じるか、または表示する必要がある場合に発生します。基本的には、showDialog()を使用する場合は、アクティビティ単位で行います。

1

この同じダイアログ起動しようとすると、私の質問は - にShowDialog(dialogID) - 別の 活動(アクティビティB)からアプリケーション クラッシュを。

アクティビティBからダイアログを呼び出すにはどうすればよいですか?ちょうどあなたが知っているように、あなたはとてもなしnew ActivityA().showDialog(id)(活動をinstianteません。

を、あなたは何ができるか

  1. AlertDialog.Builderを拡張し、コンストラクタでContextパラメータを受け入れるクラスを作成している。あなたができますテキスト、ボタンや他のものをカスタマイズします。
  2. あなたの活動から、あなたのonCreateDialogに、あなたは自分のクラスをインスタンス化することができ、その上にcreate()を呼び出す。そして、あなたのクラスはどんな活動からアクセスできるようになります。
0

私はそうは考えていません。

アクティビティAで作成されたダイアログは、アクティビティAに属します。 IDをグローバルデータスペースに格納しても問題ありません。アクティビティBで使用することはできません。 アクティビティBで別のダイアログを作成する必要があります

関連する問題