2011-01-17 25 views
1

Ich habe Aktivität A, die einen Dialog mit AlertBuilder.create usw. definiert. Diese Aktivität ruft den Dialog mit showDialog (dialogID) auf. dialogID wird in allen Klassen/Aktivitäten deklariert und erkannt. Alles funktioniert tadellos in Aktivität A.Aufrufen eines Dialogfelds aus einer anderen Aktivität

Meine Frage ist, wenn Sie versuchen, den gleichen Dialog aufzurufen - showDialog (dialogID) - von einer anderen Aktivität (Aktivität B) stürzt die Anwendung ab. Kann jemand helfen?

Wie kann ein Dialog aus mehreren Aktivitäten aufgerufen werden?

Vielen Dank im Voraus.

Andy

Antwort

0

Ich glaube nicht, können Sie erreichen, was Sie wollen, ohne einen ähnlichen Einstiegspunkt in Ihrer neuen Tätigkeit Einhaken.

showdialog (int id)

Die ID ist einzigartig in der Aktivität, die es startet. Also, wenn zwei Aktivitäten A und B beide ShowDialog (1) aufrufen; Das wird in jedem etwas anderes tun, es sei denn, jemand hat in ihren onDialogCreate() - und onPrepareDialog-Methoden denselben Codepfad für sie codiert. Also in Ihrem onDialogCreate der ursprünglichen Aktivität muss dieser Code in beiden Aktivitäten vorhanden sein. Sie können manchmal damit fertig werden, einen neuen Dialog-Typ zu erstellen, der intern die gesamte Initialisierung basierend auf einem gegebenen Kontext durchführt und einfach show() darauf aufruft. Das Problem mit dieser Lösung tritt normalerweise auf, wenn der Kontext nicht mehr gültig ist und Sie ihn schließen oder anzeigen müssen. Grundsätzlich, wenn Sie showDialog() verwenden, ist es auf einer pro Aktivität Basis.

1

Meine Frage ist, wenn man versucht, den gleichen Dialog aufzurufen - showdialog (dialogID) - von einer anderen Aktivität (Aktivität B) der Anwendung stürzt ab.

Wie rufen Sie den Dialog von Aktivität B auf? Nur damit Sie wissen, nicht wahr Aktivitäten instiante (so keinenew ActivityA().showDialog(id).

Was Sie tun können, ist

  1. Erstellen Sie eine Klasse, die AlertDialog.Builder und akzeptieren einen Context Parameter im Konstruktor erstreckt. Sie können fertigen Sie den Text, Schaltflächen und andere Dinge.
  2. von Ihrer Tätigkeit in Ihrem onCreateDialog, können Sie einfach Ihre Klasse instanziiert und create() auf es nennen. und Ihre Klasse wird von allen Aktivitäten zugänglich sein.
0

Ich glaube nicht, dass das möglich ist.

Der in Aktion A integrierte Dialog gehört zur Aktivität A. Egal, ob Sie seine ID in einem globalen Datenbereich speichern. Es wird nicht zur Verwendung in Aktivität B verfügbar sein. Sie müssen in Aktivität B

einen weiteren Dialog erstellen
Verwandte Themen