我尝试使用应用程序中的工具栏,收到以下消息:"膨胀类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);
}
}