Я продолжаю получать ошибку InFlateException в моем носимом приложении

#floating-action-button #inflate-exception

#кнопка с плавающим действием #раздувать-исключение

Вопрос:

  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2914)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3049)
        at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78)
        at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1809)
        at android.os.Handler.dispatchMessage(Handler.java:106)
        at android.os.Looper.loop(Looper.java:193)
        at android.app.ActivityThread.main(ActivityThread.java:6680)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
     Caused by: android.view.InflateException: Binary XML file line #28: Binary XML file line #28: Error inflating class com.google.android.material.floatingactionbutton.FloatingActionButton
     Caused by: android.view.InflateException: Binary XML file line #28: Error inflating class com.google.android.material.floatingactionbutton.FloatingActionButton
     Caused by: java.lang.reflect.InvocationTargetException
        at java.lang.reflect.Constructor.newInstance0(Native Method)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:343)
        at android.view.LayoutInflater.createView(LayoutInflater.java:647)
        at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:790)
        at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:730)
        at android.view.LayoutInflater.rInflate(LayoutInflater.java:863)
        at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:824)
        at android.view.LayoutInflater.rInflate(LayoutInflater.java:866)
        at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:824)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:515)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:423)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:374)
        at com.android.internal.policy.PhoneWindow.setContentView(PhoneWindow.java:420)
        at android.app.Activity.setContentView(Activity.java:2772)
        at com.example.ticwatch_1.floating_action_button.onCreate(floating_action_button.java:35)
        at android.app.Activity.performCreate(Activity.java:7144)
        at android.app.Activity.performCreate(Activity.java:7135)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1271)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2894)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3049)
        at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78)
        at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1809)
        at android.os.Handler.dispatchMessage(Handler.java:106)
        at android.os.Looper.loop(Looper.java:193)
        at android.app.ActivityThread.main(ActivityThread.java:6680)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
     Caused by: java.lang.IllegalArgumentException: The style on this component requires your app theme to be Theme.AppCompat (or a descendant).
E/AndroidRuntime:     at com.google.android.material.internal.ThemeEnforcement.checkTheme(ThemeEnforcement.java:243)
        at com.google.android.material.internal.ThemeEnforcement.checkAppCompatTheme(ThemeEnforcement.java:213)
        at com.google.android.material.internal.ThemeEnforcement.checkCompatibleTheme(ThemeEnforcement.java:148)
        at com.google.android.material.internal.ThemeEnforcement.obtainStyledAttributes(ThemeEnforcement.java:76)
        at com.google.android.material.floatingactionbutton.FloatingActionButton.<init>(FloatingActionButton.java:212)
        at com.google.android.material.floatingactionbutton.FloatingActionButton.<init>(FloatingActionButton.java:201)
            ... 30 more
 

Это ошибка, которую я получаю, я подумал, что проблема связана с плавающей кнопкой действия, но мой вопрос в том, почему? У меня есть зависимость для нее по умолчанию в приложении.

     implementation 'com.google.android.material:material:1.2.1'
 

Поэтому я не уверен, почему это не работает. Мое приложение предназначено для носимых устройств, может ли это быть проблемой?

В любом случае, вот моя активность и макет xml:

     package com.example.ticwatch_1;

import android.os.Bundle;
import android.support.wearable.activity.WearableActivity;
import android.view.View;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.widget.TextView;
import android.widget.Toast;

import androidx.fragment.app.FragmentActivity;
import androidx.fragment.app.FragmentManager;
import androidx.wear.ambient.AmbientModeSupport;
import androidx.wear.widget.drawer.WearableActionDrawerView;
import androidx.wear.widget.drawer.WearableDrawerLayout;
import androidx.wear.widget.drawer.WearableNavigationDrawerView;

import com.google.android.material.floatingactionbutton.FloatingActionButton;

public class floating_action_button extends FragmentActivity
        implements AmbientModeSupport.AmbientCallbackProvider {

    private TextView mTextView;
    /////////////////////////////////////////////////////////
    private FloatingActionButton openbtn,tools,keys,modes;
    private Boolean clicked = false;
    ////////////////////////////////////////////////////////
    Animation rotateOpen,rotateClose,fromBottom, toBottom;



    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_floating_action_button);

        mTextView = (TextView) findViewById(R.id.text);
        openbtn = (FloatingActionButton)findViewById(R.id.floatingActionButton);
        tools = (FloatingActionButton)findViewById(R.id.Tools);
        keys = (FloatingActionButton)findViewById(R.id.Keys);
        modes = (FloatingActionButton)findViewById(R.id.Modes);
        /////////////////////////////////////////////////////////////

        rotateOpen = AnimationUtils.loadAnimation(floating_action_button.this,R.anim.rotate_open_anim);
        rotateClose= AnimationUtils.loadAnimation(floating_action_button.this,R.anim.rotate_close_anime);
        fromBottom = AnimationUtils.loadAnimation(floating_action_button.this,R.anim.from_bottom);
        toBottom = AnimationUtils.loadAnimation(floating_action_button.this,R.anim.to_bottom);

        openbtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                onFloatButtonClicked();
            }
        });
        tools.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Toast.makeText(floating_action_button.this, "tools", Toast.LENGTH_SHORT).show();
            }
        });
        modes.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Toast.makeText(floating_action_button.this, "modes", Toast.LENGTH_SHORT).show();
            }
        });
        keys.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Toast.makeText(floating_action_button.this, "keys", Toast.LENGTH_SHORT).show();
            }
        });



    }

    @Override
    public AmbientModeSupport.AmbientCallback getAmbientCallback() {
        return null;
    }
    private void onFloatButtonClicked()
    {
        setVisibility(clicked);
        setAnimations(clicked);
        clicked = !clicked;
    }
    private void setVisibility(Boolean clicked)
    {
        if(!clicked)
        {
            tools.setVisibility(View.VISIBLE);
            modes.setVisibility(View.VISIBLE);
            keys.setVisibility(View.VISIBLE);
        }
        else
        {
            tools.setVisibility(View.INVISIBLE);
            modes.setVisibility(View.INVISIBLE);
            keys.setVisibility(View.INVISIBLE);
        }
    }
    private void setAnimations(Boolean clicked)
    {
        if(!clicked)
        {
            openbtn.startAnimation(rotateOpen);
            tools.startAnimation(fromBottom);
            modes.startAnimation(fromBottom);
            keys.startAnimation(fromBottom);
        }
        else
        {
            openbtn.startAnimation(rotateClose);
            tools.startAnimation(toBottom);
            modes.startAnimation(toBottom);
            keys.startAnimation(toBottom);
        }
    }
}
 

Это макет xml:

   <?xml version="1.0" encoding="utf-8"?>
<androidx.wear.widget.CircularProgressLayout
    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:background="@color/dark_grey"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".floating_action_button"
    tools:deviceIds="wear"
    android:padding="@dimen/box_inset_layout_padding">


<FrameLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:padding="@dimen/inner_frame_layout_padding"
    >

    <TextView
        android:id="@ id/text"
        android:layout_gravity="center"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/hello_world" />


        <com.google.android.material.floatingactionbutton.FloatingActionButton
            android:id="@ id/Modes"
            android:layout_gravity="center"
            android:translationY="-60dp"
            android:translationX="-50dp"
            android:visibility="invisible"
            android:layout_width="40dp"
            android:layout_height="40dp"
            android:background="@drawable/round_shape"
            android:backgroundTint="@color/green"
            android:clickable="true"
            android:focusable="true"
            android:src="@drawable/ic_mode" />



        <com.google.android.material.floatingactionbutton.FloatingActionButton
            android:id="@ id/Keys"
            android:layout_gravity="center"
            android:translationY="-10dp"
            android:translationX="-70dp"
            android:visibility="invisible"
            android:layout_width="40dp"
            android:layout_height="40dp"
            android:background="@drawable/round_shape"
            android:backgroundTint="@color/red_a200"
            android:clickable="true"
            android:focusable="true"
            android:src="@drawable/ic_key"/>





        <com.google.android.material.floatingactionbutton.FloatingActionButton
            android:id="@ id/Tools"
            android:translationY="40dp"
            android:translationX="-50dp"
            android:layout_gravity="center"
            android:visibility="invisible"
            android:layout_width="40dp"
            android:layout_height="40dp"
            android:background="@drawable/round_shape"
            android:backgroundTint="@color/orange"
            android:clickable="true"
            android:focusable="true"
            android:src="@drawable/ic_tools" />


        <com.google.android.material.floatingactionbutton.FloatingActionButton
            android:id="@ id/floatingActionButton"
            android:layout_gravity="center"
            android:translationY="70dp"
            android:layout_width="50dp"
            android:layout_height="50dp"
            android:focusable="true"
            android:clickable="true"
            android:src="@drawable/ic_menu"
            android:background="@drawable/round_shape"
            android:backgroundTint="#00BFFF"/>

</FrameLayout>
</androidx.wear.widget.CircularProgressLayout>