求助:为何出现androidx.appcompat.widget.Toolbar转android.widget.Toolbar类型转换异常
解决Toolbar类型转换异常(ClassCastException)
错误原因
你遇到的java.lang.ClassCastException: androidx.appcompat.widget.Toolbar cannot be cast to android.widget.Toolbar异常,本质是系统原生Toolbar与AppCompat库Toolbar的类型不匹配——代码里引用的是系统原生的android.widget.Toolbar,但实际布局中使用的是AppCompat兼容库的androidx.appcompat.widget.Toolbar,或是导入包时混淆了两种类型。
解决方案
按以下步骤排查修正:
修正代码中的导入语句
打开你的Activity代码,确保导入的是AppCompat版本的Toolbar:import androidx.appcompat.widget.Toolbar;如果之前有
import android.widget.Toolbar;,直接删除这条导入。确认布局文件的Toolbar标签
检查布局XML中Toolbar的标签,必须是AppCompat的全类名:<androidx.appcompat.widget.Toolbar android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" android:background="?attr/colorPrimary" />若之前写的是
android.widget.Toolbar,替换成上述代码。对齐变量声明类型
确保Activity中toolbar变量的类型与导入的类一致:private Toolbar toolbar; // 此时Toolbar对应androidx.appcompat.widget.Toolbar
修正后的代码示例
import androidx.appcompat.widget.Toolbar; // 其他必要导入... public class CategorySelectedActivity extends AppCompatActivity { private Toolbar toolbar; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.your_layout); toolbar = findViewById(R.id.toolbar); setSupportActionBar(toolbar); getSupportActionBar().setDisplayShowHomeEnabled(true); getSupportActionBar().setDisplayHomeAsUpEnabled(true); } }
内容的提问来源于stack exchange,提问作者Shin Ishiney
相关产品推荐
相关产品推荐

