【问题标题】:android.widget.Toolbar cannot be converted to android.support.v7.widget.Toolbarandroid.widget.Toolbar 无法转换为 android.support.v7.widget.Toolbar
【发布时间】:2021-06-23 21:40:25
【问题描述】:

我有一个toolbar.xml:

<android.support.v7.widget.Toolbar
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/color_primary"
android:elevation="4dp"
android:theme="@style/ThemeOverlay.AppCompat.Dark" />

我的另一个活动布局有一个包含标签:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent"
android:theme="@style/AppTheme">

<include
    layout="@layout/toolbar"
    android:id="@+id/tb">
</include>

<android.support.v7.widget.RecyclerView
    android:id="@+id/grade_list"
    android:scrollbars="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#FFFFFF" />

我已经在我的扩展 AppCompatActivity 的活动中实现了它:

Toolbar toolbar;
    toolbar = (Toolbar)findViewById(R.id.tb);
    setSupportActionBar(toolbar);

但是,当我运行我的应用程序时出现以下错误:

Error:(26, 29) error: incompatible types: android.widget.Toolbar cannot be converted to android.support.v7.widget.Toolbar

此外,当我在编辑器中查看布局时,我收到以下消息:

Missing styles. Is the correct theme chosen for this layout?
Use the theme combo box above the layout to choose a different layout, or to fix the theme style references.
Failed to find style 'toolbarStyle' in current layout.

还有我的styles.xml:

<resources>
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
    <item name="colorPrimary">@color/color_primary</item>
    <item name="colorPrimaryDark">@color/color_primaryDark</item>
    <item name="colorAccent">@color/color_accent</item>
    <item name="colorControlNormal">@color/color_accent</item>
</style>

我看不出哪里出错了。在编辑器和我的清单文件中选择了正确的主题。一如既往地感谢所有帮助!

【问题讨论】:

  • 在您的活动顶部必须有import android.support.v7.widget.Toolbar; 而不是import android.widget.Toolbar;

标签: android android-layout


【解决方案1】:

您在 XML 中使用 android.support.v7.widget.Toolbar,但在您的 java 代码中您导入的是不同类型的 android.widget.Toolbar。将您的导入更改为android.support.v7.widget.Toolbar,它应该可以工作。

【讨论】:

  • @Steve nvm steve,我做了同样的 xD
  • 你是对的。我从import android.widget.Toolbar; 切换到import androidx.appcompat.widget.Toolbar;,这解决了我的错误。谢谢
【解决方案2】:

如果您的项目已经迁移到 AndroidX,请导入此
import androidx.appcompat.widget.Toolbar;

否则通过
重构>迁移到 AndroidX 迁移到 AndroidX XML和Java的完整代码示例

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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"
android:orientation="vertical"
tools:context=".Events.Events_Main_Activity">
<androidx.coordinatorlayout.widget.CoordinatorLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content">
    <com.google.android.material.appbar.AppBarLayout
        android:id="@+id/appbarlayout_id"
        android:layout_width="match_parent"
        android:layout_height="300dp"
        android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">
        <com.google.android.material.appbar.CollapsingToolbarLayout
            android:id="@+id/collapsingtoolbar_id"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            app:contentScrim="?attr/colorPrimary"
            app:expandedTitleMarginEnd="8dp"
            app:expandedTitleMarginStart="8dp"
            app:layout_scrollFlags="exitUntilCollapsed|scroll"
            app:title="Anime Title"
            app:titleEnabled="true">
            <ImageView
                android:id="@+id/aa_thumbnail"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:background="@drawable/bg_gradient" />
            <androidx.appcompat.widget.Toolbar
                android:id="@+id/toolbar_sec"
                android:layout_width="match_parent"
                android:layout_height="?attr/actionBarSize"
                app:title="shshhs" />
        </com.google.android.material.appbar.CollapsingToolbarLayout>
    </com.google.android.material.appbar.AppBarLayout>
</androidx.coordinatorlayout.widget.CoordinatorLayout>
</LinearLayout>



package com.uafappdevelopers.example;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
//note this import
import androidx.appcompat.widget.Toolbar;
import com.uafappdevelopers.uafportal.R;
public class Events_Second_Activity extends AppCompatActivity {
//add this for the navigation back button click event
@Override
public boolean onSupportNavigateUp() {
    onBackPressed();
    finish();
    return super.onSupportNavigateUp();
}
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_event_second);
    //change id to Your id
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar_sec);
    setSupportActionBar(toolbar);
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);
    getSupportActionBar().setDisplayShowHomeEnabled(true);
    setTitle("University of Agriculture Faisalabad");
}
}

【讨论】:

    【解决方案3】:
    android.support.v7.widget.Toolbar toolbar;
    
    
    toolbar = (android.support.v7.widget.Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);
    

    【讨论】:

    • 您的代码块中似乎漏掉了一行代码。
    【解决方案4】:

    这适用于最新的 android 版本:

    Toolbar toolbar = findViewById(R.id.toolbarflwrs);
    setSupportActionBar(toolbar);
    

    注意,从:

    导入Toolbar

    androidx.appcompat.widget.Toolbar

    【讨论】:

      【解决方案5】:

      发件人:

      工具栏工具栏 = findViewById(R.id.toolbar); setSupportActionBar(工具栏);

      收件人:

      androidx.appcompat.widget.Toolbar 工具栏 = findViewById(R.id.toolbar); setSupportActionBar(工具栏);

      【讨论】:

      • 嗨 Golem,欢迎来到 StackOverflow。这与 M.Noman Zaman 的答案基本相同(以前的答案),请在发布答案之前仔细检查。此外,您应该将代码包含在代码块中,您可能想看看how to format text
      【解决方案6】:

      Android 自动导入“import android.widget.Toolbar;”但我导入了“import androidx.appcompat.widget.Toolbar;”然后添加“setSupportActionBar(toolbar);”。它对我有用。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-09-03
        • 1970-01-01
        • 2015-06-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-08-26
        相关资源
        最近更新 更多