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>

58voto

Geraldo Neto Punkte 3190

Ich hatte dieses Problem, obwohl mein Theme ein AppCompat Thema war und meine Aktivität ein AppCompatActivity war (oder Aktivität, wie in anderen Antworten vorgeschlagen). Also habe ich das Projekt gereinigt, neu erstellt und neu gestartet.

(Build -> Projekt bereinigen; Build -> Projekt neu erstellen; Run -> Ausführen)

Es mag dumm erscheinen, aber jetzt funktioniert es großartig!

Ich hoffe nur, dass es hilft!

33voto

k29 Punkte 1805

Das ist, was es für mich behoben hat: Anstatt das Thema im Manifest anzugeben, habe ich es in onCreate für jede Aktivität definiert, die ActionBarActivity erweitert:

@Override
protected void onCreate(Bundle savedInstanceState) {
    setTheme(R.style.MyAppTheme);
    super.onCreate(savedInstanceState);
    setContentView(R.layout.my_activity_layout);
...
}

Hier ist MyAppTheme ein Nachfolger von Theme.AppCompat und ist in XML definiert. Beachten Sie, dass das Thema vor super.onCreate und setContentView festgelegt werden muss.

27voto

Yamen Nassif Punkte 2396

Gehen Sie zu Ihren Stilen und setzen Sie den Eltern

parent="Theme.AppCompat"

anstelle von

parent="@android:style/Theme.Holo.Light"

21voto

sharma_kunal Punkte 2076

Ändern Sie das Theme der gewünschten Aktivität. Das funktioniert für mich:

19voto

aligur Punkte 3024

In meinem Fall habe ich keine Werte-v21-Datei in meinem Res-Verzeichnis. Dann habe ich sie erstellt und die folgenden Codes hinzugefügt:

    <!-- Passen Sie Ihr Theme hier an. -->
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>

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