【问题标题】:Error inflating class androidx.appcompat.widget.Toolbar android错误膨胀类 androidx.appcompat.widget.Toolbar android
【发布时间】:2021-04-09 10:52:22
【问题描述】:

我尝试在我的应用程序中使用工具栏并收到以下消息:“错误膨胀类 androidx.appcompat.widget.Toolbar”。 我很高兴有人能找到我的问题(使用最新版本的 android studio)

XML:

  <androidx.appcompat.widget.Toolbar
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:background="#00008577"
        android:minHeight="?actionBarTheme"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:navigationIcon="@drawable/main"
        android:id="@+id/toolbar"/>

JAVA:


    private Toolbar toolbar;

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

        findViews();
        setSupportActionBar(toolbar);

    }

    private void findViews() {
        drawer_layout = findViewById(R.id.drawer_layout);
        nav_view = findViewById(R.id.nav_view);
        toolbar = findViewById(R.id.toolbar);
    }

风格: &lt;style name="AppTheme" parent="Theme.MaterialComponents.DayNight.NoActionBar"&gt;

收到异常

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.or.ourshoppinglist/com.or.ourshoppinglist.MainActivity}: android.view.InflateException: Binary XML file line #28: Binary XML file line #28: Error inflating class <unknown>

【问题讨论】:

  • 你的例外是什么?
  • java.lang.RuntimeException:无法启动活动 ComponentInfo{com.or.ourshoppinglist/com.or.ourshoppinglist.MainActivity}:android.view.InflateException:二进制 XML 文件第 28 行:二进制 XML文件第 28 行:膨胀类 时出错
  • 我认为你需要提供你所有的 xml 文件,它在第 28 行与它相关
  • 我给他们加了一条评论
  • 我认为你的风格导致工具栏膨胀的问题,你必须使用Theme.AppCompat一个

标签: java android android-studio android-toolbar material-components-android


【解决方案1】:

你好 noa shen,欢迎来到 Stackoverflow。

首先,您的工具栏导入可能存在问题。自从 android 版本出来后,你得到了两个版本的 Toolbar:

androidx.appcompat.widget.Toolbar

android.support.v7.widget.Toolbar

所以首先检查你在 JAVA.class 中的导入,看看你是否导入了正确的版本:

androidx.appcompat.widget.Toolbar

除此之外,为什么你的工具栏宽度等于0?

<androidx.appcompat.widget.Toolbar
    android:layout_width="0dp"

还要使用工具栏,您需要将其粘贴到构建 Gradle 文件中的依赖项中:

implementation 'androidx.appcompat:appcompat:1.0.0'

如果这不能解决任何问题,请提供您的整个 XML、JAVA.class 和您的异常的完整堆栈跟踪。

【讨论】:

  • 感谢您的帮助! “导入 androidx.appcompat.widget.Toolbar;”这是我的进口。我添加了实现,但仍然没有用。
  • @noashen 请编辑您的问题并添加您的整个 XML 文件和 JAVA 文件。也给我们你的整个例外会很棒。
  • 我给他们加了一条评论
【解决方案2】:

添加了我的整个 XML

<androidx.drawerlayout.widget.DrawerLayout 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:id="@+id/drawer_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fitsSystemWindows="true"
    tools:context=".MainActivity"
    tools:openDrawer="start">

    <com.google.android.material.navigation.NavigationView
        android:id="@+id/nav_view"
        android:layout_gravity="start"
        android:layout_height="match_parent"
        android:layout_width="wrap_content"
        app:headerLayout="@layout/header"
        app:menu="@menu/main_menu" />

<ScrollView
    android:layout_width="match_parent"
    android:layout_height="match_parent">
<androidx.constraintlayout.widget.ConstraintLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#FFFFFF">

    <androidx.appcompat.widget.Toolbar
        android:layout_width="100dp"
        android:layout_height="wrap_content"
        android:background="#00008577"
        android:minHeight="?actionBarTheme"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:navigationIcon="@drawable/main"
        android:id="@+id/toolbar"/>


</androidx.constraintlayout.widget.ConstraintLayout>


</ScrollView>


</androidx.drawerlayout.widget.DrawerLayout>

JAVA:

package com.or.ourshoppinglist;

import androidx.appcompat.app.ActionBarDrawerToggle;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;
import androidx.drawerlayout.widget.DrawerLayout;

import android.os.Bundle;

import com.google.android.material.navigation.NavigationView;


public class MainActivity extends AppCompatActivity {

    private DrawerLayout drawer_layout;
    private NavigationView nav_view;
    private Toolbar toolbar;

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

        findViews();
        setSupportActionBar(toolbar);

        ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(this, drawer_layout,toolbar,R.string.navigation_drawer_open,R.string.navigation_drawer_close);
        drawer_layout.addDrawerListener(toggle);
        toggle.syncState();
    }

    private void findViews() {
        drawer_layout = findViewById(R.id.drawer_layout);
        nav_view = findViewById(R.id.nav_view);
        toolbar = findViewById(R.id.toolbar);
    }
}

【讨论】:

  • 尝试在工具栏 "android:minHeight="?actionBarTheme"" 下删除 XML 中的行,然后在 android:layout_height="?attr/actionBarSize" 下添加
猜你喜欢
  • 1970-01-01
  • 2017-09-08
  • 2016-11-12
  • 2016-12-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多