【问题标题】:android.widget.Toolbar cannot be cast to androidx.appcompat.widget.Toolbar even though that is not the caseandroid.widget.Toolbar 不能转换为 androidx.appcompat.widget.Toolbar 即使不是这样
【发布时间】:2020-06-06 08:00:41
【问题描述】:

我不确定为什么会收到此错误。 我不是从两个不同的工具栏投射

这是我的代码:

androidx.appcompat.widget.Toolbar toolbar = (androidx.appcompat.widget.Toolbar) findViewById(R.id.toolbar_header);
        setSupportActionBar(toolbar)

我在这里做错了什么。

这是错误

E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.example.mycontactlist, PID: 12667
    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.mycontactlist/com.example.mycontactlist.ContactListActivity}: java.lang.ClassCastException: android.widget.Toolbar cannot be cast to androidx.appcompat.widget.Toolbar
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2913)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3048)
        at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78)

【问题讨论】:

  • 能否在您定义toolbar_header 的位置包含XML?

标签: android androidx


【解决方案1】:

在您的 xml 文件中定义了错误的工具栏类。改成

<Toolbar .../>

<androidx.appcompat.widget.Toolbar .../>

【讨论】:

    【解决方案2】:

    在您的 XML 中,您可能只使用 &lt;Toolbar&gt;&lt;/Toolbar&gt; 声明了您的工具栏,在这种情况下,工具栏将从包 android.widget 创建。因此,如果您尝试通过将findViewById 强制转换为androidx.appcompat.widget.Toolbar 来调用它,它肯定会抛出一个RuntimeException。

    如果您使用的是 AndroidX,那么您必须将工具栏的 xml 声明更改为 &lt;androidx.appcompat.widget.Toolbar&gt;&lt;/androidx.appcompat.widget.Toolbar&gt;

    然后您可以继续致电您的 (androidx.appcompat.widget.Toolbar) findViewByid(..),这应该会成功

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-01-11
      • 1970-01-01
      • 2021-02-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多