我不确定为什么我会得到这个错误。我不是从两个不同的工具栏进行强制转换
下面是我的代码:
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)
发布于 2020-02-21 21:21:48
在xml文件中定义了错误的工具栏类。将其更改为
<Toolbar .../>
至
<androidx.appcompat.widget.Toolbar .../>
发布于 2020-02-21 21:26:59
在XML中,您可能只使用<Toolbar></Toolbar>
声明了工具栏,在这种情况下,工具栏将从包android.widget
中创建。因此,如果您试图通过将findViewById
强制转换为androidx.appcompat.widget.Toolbar
来调用它,它肯定会抛出一个RuntimeException。
如果您使用的是AndroidX,那么您必须将工具栏的xml声明更改为<androidx.appcompat.widget.Toolbar></androidx.appcompat.widget.Toolbar>
然后,您可以继续调用您的(androidx.appcompat.widget.Toolbar) findViewByid(..)
,这应该会成功
https://stackoverflow.com/questions/60346281
复制