Ich habe eine Aktivität mit dem Namen, whereActity
die auch untergeordnete Dialoge enthält. Jetzt möchte ich diese Aktivität als Dialogfeld für eine andere Aktivität anzeigen.
Wie kann ich das machen?
Ich habe eine Aktivität mit dem Namen, whereActity
die auch untergeordnete Dialoge enthält. Jetzt möchte ich diese Aktivität als Dialogfeld für eine andere Aktivität anzeigen.
Wie kann ich das machen?
Antworten:
Um die Aktivität als Dialog zu starten, habe ich sie folgendermaßen definiert
AndroidManifest.xml
:Verwenden Sie diese Eigenschaft in Ihrem
activity
Tag, um zu vermeiden, dass Ihr Dialogfeld in der Liste der zuletzt verwendeten Apps angezeigt wirdWenn Sie verhindern möchten, dass Ihr Dialog / Ihre Aktivität zerstört wird, wenn der Benutzer außerhalb des Dialogfelds klickt:
Nach
setContentView()
IhrerActivity
Verwendung:this.setFinishOnTouchOutside(false);
Wenn ich
startActivity()
es jetzt aufrufe, wird es als Dialog angezeigt. Die vorherige Aktivität wird angezeigt, wenn der Benutzer die Zurück-Taste drückt.Beachten Sie, dass Sie stattdessen
ActionBarActivity
(oder das AppCompat-Design) verwenden müssen@style/Theme.AppCompat.Dialog
.quelle
@style/Theme.AppCompat.Dialog
this.setFinishOnTouchOutside(false);
umsetContentView()
zu verhindern, dass die Aktivität zerstört wird, wenn Sie außerhalb des von Ihnen erstellten Dialogfelds klicken.Verwenden Sie diesen Code, damit die Dialogaktivität nicht geschlossen wird, wenn der Benutzer außerhalb des Dialogfelds berührt:
erfordert API Level 11
quelle
Sie können diesen Stil in values / styles.xml definieren, um einen früheren Splash auszuführen:
Und benutze es AndroidManifest.xml:
quelle
@drawable/trans
: Sie sollten in der Lage sein@android:color/transparent
, einenColorDrawable
Hintergrund zu verwenden.<item name="windowNoTitle">true</item>
(kein "Android"). Siehe hier . Ich bin mir bei den anderen Artikeln nicht sicher.1 - Sie können dieselbe Aktivität wie Dialog und Vollbild dynamisch verwenden:
Rufen Sie
setTheme(android.R.style.Theme_Dialog)
vor dem AnrufsetContentView(...)
undsuper.oncreate()
in Ihrer Aktivität an.2 - Wenn Sie nicht vorhaben, den Stil des Aktivitätsthemas zu ändern, können Sie ihn verwenden
(wie von @faisal khan erwähnt)
quelle
<activity android:theme="@android:style/Theme.Dialog" />
) auf ein Dialogthema und setzen Sie das Aktivitätsthema programmgesteuert auf einen Dialog oder eine Aktivität in onCreate stackoverflow.com/a/35915764/2898715Wenn Sie eine Appcompat-Version benötigen
style.xml
yourmanifest.xml
quelle
<item name="windowNoTitle">true</item>
, damit es für mich funktioniert. Ich habe auch<item name="android:windowActionBar">false</item>
für ein gutes Maß hinzugefügt .<item name="android:windowNoTitle">true</item>
hat es nicht funktioniert (Android 5.0.1), und ich musste zu<item name="windowNoTitle">true</item>
Wenn Ihre Aktivität als Dialog gerendert wird, fügen Sie einfach eine Schaltfläche zur XML-Datei Ihrer Aktivität hinzu.
Fügen Sie dann einen Klick-Listener in den Java-Code Ihrer Aktivität ein. Rufen Sie im Listener einfach an
finish()
Das sollte Ihren Dialog schließen und Sie zur aufrufenden Aktivität zurückkehren.
quelle
Wenn Sie den Aktivitätsheader entfernen und eine benutzerdefinierte Ansicht für das Dialogfeld bereitstellen möchten, fügen Sie dem Aktivitätsblock Ihres Manifests Folgendes hinzu
und gestalten Sie Ihr activity_layout mit der gewünschten Ansicht
quelle
Legen Sie das Thema in Ihrer Android-Manifest-Datei fest.
Stellen Sie den Dialogstatus bei Berührung ein, um den Vorgang abzuschließen.
quelle
Aktivität als Dialogfeld erstellen. Hier ist ein vollständiges Beispiel
AndroidManife.xml
<activity android:name=".appview.settings.view.DialogActivity" android:excludeFromRecents="true" android:theme="@style/Theme.AppCompat.Dialog"/>
DialogActivity.kt
activity_dialog.xml
quelle
Manchmal können Sie die unten angegebene Ausnahme erhalten
Auslöser: java.lang.IllegalStateException: Für diese Aktivität müssen Sie ein Theme.AppCompat-Design (oder einen Nachkommen) verwenden.
Zum Auflösen können Sie also eine einfache Lösung verwenden
Fügen Sie das Thema Ihrer Aktivität im Manifest als Dialogfeld für appCompact hinzu.
Es kann für jemanden hilfreich sein.
quelle