膨胀类androidx.appcompat.widget.Toolbar android时出错



我尝试使用应用程序中的工具栏,收到以下消息:"膨胀类androidx.appcompat.widget.Toolbar时出错;。我很高兴如果有人会发现我的问题(使用最新版本的安卓工作室(

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);
}

样式:<style name="AppTheme" parent="Theme.MaterialComponents.DayNight.NoActionBar">

收到异常

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>

你好,欢迎来到Stackoverflow。

首先,您的Toolbar导入可能存在问题。自从androix版本问世以来,现在你有两个版本的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和异常的全栈跟踪。

build.gradle (module app)文件中,升级版本implementation 'androidx.appcompat:appcompat:1.4.1'的实现导致了我的错误。当我使用implementation 'androidx.appcompat:appcompat:1.0.0'时,错误已经消失。

我在使用时通过将android:background更改为app:srcCompat来解决此问题?android:attr

例如:

从这个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"/>

更改为

<androidx.appcompat.widget.Toolbar
android:layout_width="0dp"
android:layout_height="wrap_content"
app:srcCompat="#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"/>

希望能有所帮助。

添加了我的整个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);
}
}

相关内容

  • 没有找到相关文章

最新更新