1220 Stimmen

Du musst ein Theme.AppCompat-Thema (oder Abkömmling) mit dieser Aktivität verwenden

Android Studio 0.4.5

Android-Dokumentation zur Erstellung benutzerdefinierter Dialogfelder: http://developer.android.com/guide/topics/ui/dialogs.html

Wenn Sie ein benutzerdefiniertes Dialogfeld möchten, können Sie stattdessen eine Aktivität als Dialogfeld anzeigen, anstatt die Dialog-APIs zu verwenden. Erstellen Sie einfach eine Aktivität und setzen Sie ihr Theme auf Theme.Holo.Dialog im the Manifestelement:

Allerdings erhalte ich bei meinem Versuch die folgende Ausnahme:

java.lang.IllegalStateException: Sie müssen ein Theme.AppCompat-Thema (oder Nachfolger) für diese Aktivität verwenden

Ich unterstütze das Folgende, und ich kann nichts Größeres als 10 für das Minimum verwenden:

minSdkVersion 10
targetSdkVersion 19

In meinen Styles habe ich das Folgende:

</code></pre>

<p>Und in meinem Manifest habe ich dies für die Aktivität:</p>

<pre><code> <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:theme="@android:style/Theme.Holo.Light.Dialog"
            android:name="com.ssd.register.Dialog_update"
            android:label="@string/title_activity_dialog_update" >
        </activity>
</code></pre>

<p>Die Erstellung des Dialogfelds auf diese Weise war etwas, was ich gerne machen wollte, da das Layout bereits abgeschlossen ist.</p>

<p>Kann mir jemand sagen, wie ich dieses Problem umgehen kann?</p></x-turndown>

18voto

Ali Akram Punkte 3823

Einfach machen

new AlertDialog.Builder(this)

Anstatt von

new AlertDialog.Builder(getApplicationContext())

17voto

PPP Punkte 1389

Für mich war eine Lösung, nachdem ich alle Lösungen von hier ausprobiert hatte, das Ändern

um ein Theme einzuschließen:

16voto

goRGon Punkte 4322

Ich hatte solche Abstürze auf Samsung Geräten, obwohl die Aktivität Theme.AppCompat verwendet hat. Die Ursache war auf seltsame Optimierungen auf der Samsung-Seite zurückzuführen:

- wenn eine Aktivität Ihrer App ein Theme verwendet, das nicht von Theme.AppCompat abgeleitet ist
- und es auch `android:launchMode="singleTask"` hat
- dann werden alle Aktivitäten, die davon gestartet werden, dasselbe Theme teilen

Meine Lösung bestand darin, einfach android:launchMode="singleTask" zu entfernen

14voto

JonasOliveira Punkte 694

Wenn Sie ActionBarActivity erweitern müssen, müssen Sie in Ihrer style.xml Folgendes hinzufügen:

<style name="AppTheme.Base" parent="Theme.AppCompat.Light.DarkActionBar">
    <!-- Passen Sie Ihr Thema hier an. -->
</code></pre>

<p>Wenn Sie das Hauptthema Ihrer Anwendung als android:Theme.Material.Light anstelle von <strong>AppTheme.Base</strong> festlegen, erhalten Sie einen "IllegalStateException: Sie müssen ein Theme.AppCompat-Thema (oder Nachfolger) mit dieser Aktivität verwenden" Fehler.</p></x-turndown>

14voto

Marc Baduq Punkte 141

Ich hatte das gleiche Problem, aber es löste sich, als ich dies im Manifest hinzufügte: android:theme="@style/Theme.AppCompat.

        ...

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X