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>

8voto

Wraithious Punkte 365

Ich hatte auch dieses Problem und was ich getan habe, um es zu beheben und immer noch das Holo-Thema zu verwenden, war folgendes:

Zuerst ersetzte ich diesen Import:

import android.support.v7.app.AppCompatActivity;

mit diesem:

import android.app.Activity;

dann änderte ich meine Erweiterung von:

public class MyClass extends AppCompatActivity {//...

zu diesem:

public class MyClass extends Activity {//...

Und musste auch diesen Import ändern:

import android.support.v7.app.AlertDialog;

zu diesem Import:

import android.app.AlertDialog;

und dann können Sie Ihr Theme-Tag im Manifest auf der Aktivitätsebene verwenden:

android:theme="@android:style/Theme.Holo.Dialog" />

und schließlich (es sei denn, Sie haben andere Klassen in Ihrem Projekt, die appCompat v7 verwenden müssen), können Sie entweder Ihr Projekt bereinigen und neu erstellen oder diesen Eintrag in der Gradle-Build-Datei auf der App-Ebene löschen:

compile 'com.android.support:appcompat-v7:23.2.1'

wenn Sie andere Klassen in Ihrem Projekt haben, die appCompat v7 nutzen müssen, dann bereinigen und erstellen Sie das Projekt einfach neu.

8voto

Peter Punkte 190

Für mich war die Lösung, ContextThemeWrapper zu verwenden:

private FloatingActionButton getFAB() {
Context context = new android.support.v7.view.ContextThemeWrapper(getContext(), R.style.AppTheme);
FloatingActionButton fab = new FloatingActionButton(context);
return fab;}

von Android - Wie erstelle ich FAB programmatisch?

7voto

user1501382 Punkte 1187

Dies hat bei mir funktioniert:

7voto

Azhar osws Punkte 188

Ich hatte das gleiche Problem. Da ich eine benutzerdefinierte Navigationsleiste erstellt habe. Aber ich habe vergessen, das Thema in meinem Manifest wie folgt zu erwähnen

android:theme="@style/Theme.AppCompat.NoActionBar"

Sobald ich das obige Thema zu meinem Manifest hinzugefügt habe, wurde das Problem gelöst.

7voto

Kaloglu Punkte 1462

Sie haben viele Lösungen für diesen Fehler.

  1. Sie sollten Activity oder FragmentActivity anstelle von ActionbarActivity oder AppCompatActivity verwenden

  2. Wenn Sie ActionbarActivity oder AppCompatActivity verwenden möchten, sollten Sie in der Datei styles.xml von Theme.Holo.xxxx auf Theme.AppCompat.Light ändern (falls erforderlich hinzufügen DarkActionbar)

Wenn Sie keine erweiterten Attribute für die Aktionsleiste oder AppCompat benötigen, brauchen Sie keine Actionbar oder AppCompat zu verwenden.

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