web-dev-qa-db-fra.com

Impossible de trouver le style 'floatingActionButtonStyle' dans le thème actuel

Je suis débutant dans le développement Android, je lance donc le projet simple fourni avec le studio Android "hello world", mais cela pose le problème suivant:

Impossible de trouver le style 'floatingActionButtonStyle' dans le thème actuel J'ai Android studio 3.1.3 x86

ma version SDK du fichier build.gradle est également 28 

et voici le activity_main.xml :

    <?xml version="1.0" encoding="utf-8"?>
<Android.support.design.widget.CoordinatorLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
    xmlns:app="http://schemas.Android.com/apk/res-auto"
    xmlns:tools="http://schemas.Android.com/tools"
    Android:layout_width="match_parent"
    Android:layout_height="match_parent"
    tools:context=".MainActivity">

    <Android.support.design.widget.AppBarLayout
        Android:layout_width="match_parent"
        Android:layout_height="wrap_content"
        Android:theme="@style/AppTheme.AppBarOverlay">

        <Android.support.v7.widget.Toolbar
            Android:id="@+id/toolbar"
            Android:layout_width="match_parent"
            Android:layout_height="?attr/actionBarSize"
            Android:background="?attr/colorPrimary"
            app:popupTheme="@style/AppTheme.PopupOverlay" />

    </Android.support.design.widget.AppBarLayout>

    <include layout="@layout/content_main" />

    <Android.support.design.widget.FloatingActionButton
        Android:id="@+id/fab"
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:layout_gravity="bottom|end"
        Android:layout_margin="@dimen/fab_margin"
        app:srcCompat="@Android:drawable/ic_dialog_email" />

</Android.support.design.widget.CoordinatorLayout>

et voici mon content_main.xml :

        <?xml version="1.0" encoding="utf-8"?>
    <Android.support.constraint.ConstraintLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
        xmlns:app="http://schemas.Android.com/apk/res-auto"
        xmlns:tools="http://schemas.Android.com/tools"
        Android:layout_width="match_parent"
        Android:layout_height="match_parent"
        app:layout_behavior="@string/appbar_scrolling_view_behavior"
        tools:context=".MainActivity"
        tools:showIn="@layout/activity_main">

        <TextView
            Android:layout_width="wrap_content"
            Android:layout_height="wrap_content"
            Android:text="Hello World!"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintLeft_toLeftOf="parent"
            app:layout_constraintRight_toRightOf="parent"
            app:layout_constraintTop_toTopOf="parent" />
    </Android.support.constraint.ConstraintLayout>

et voici mon AndroidManifest.xml :

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:Android="http://schemas.Android.com/apk/res/Android"
    package="com.example.admin.myapplication">

    <application
        Android:allowBackup="true"
        Android:icon="@mipmap/ic_launcher"
        Android:label="@string/app_name"
        Android:roundIcon="@mipmap/ic_launcher_round"
        Android:supportsRtl="true"
        Android:theme="@style/AppTheme">
        <activity
            Android:name=".MainActivity"
            Android:label="@string/app_name"
            Android:theme="@style/AppTheme.NoActionBar">
            <intent-filter>
                <action Android:name="Android.intent.action.MAIN" />

                <category Android:name="Android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>
6
zerocool

En vérifiant la source de FloatingActionButton, on peut voir que le constructeur a été changé en

public FloatingActionButton(Context context, AttributeSet attrs) {
    this(context, attrs, R.attr.floatingActionButtonStyle);
}

Il y a la nouvelle floatingActionButtonStyle qui semble ne pas être incluse par défaut dans 'com.Android.support:appcompat-v7:28.0.0-alpha1'

La meilleure solution de contournement que j'ai trouvée (basée sur un cas similaire ici ) consiste à définir l'attribut dans votre thème (peut-être uniquement dans la version de débogage). Ainsi, l'erreur disparaîtra car @style/Widget.Design.FloatingActionButton est déjà défini dans le support si vous n'avez pas besoin de créer le style, il suffit de le référencer dans votre style AppTheme dans votre fichier values/styles.xml.

<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <!-- Customize your theme here. -->
    <item name="floatingActionButtonStyle">@style/Widget.Design.FloatingActionButton</item>
</style>

Veillez à utiliser AppTheme dans l'aperçu de la disposition et à créer de nouvelles versions.

5
Rami Alloush

Cela pourrait être une erreur "fausse" à propos du style: vérifiez si vous avez écrit la setOnClickListener pour la bonne activité où vous avez ce problème. Peut-être que vous avez écrit l'auditeur pour ce bouton sur la mauvaise activité. Vous pouvez facilement le tester en commentant temporairement le code à propos de setOnClickListener et en relançant le build.

1
Alessandro Ornano