android.widget.Toolbar 不能强制转换为 androidx.appcompat.widget.Too



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

这是我的代码:

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)

xml 文件中定义的工具栏类错误。将其从

<Toolbar .../>

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

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

如果您使用的是 AndroidX,则必须将工具栏的 xml 声明更改为<androidx.appcompat.widget.Toolbar></androidx.appcompat.widget.Toolbar>

然后,您可以继续调用应该成功的(androidx.appcompat.widget.Toolbar) findViewByid(..)

相关内容

最新更新