【问题标题】:cannot be cast to androidx.appcompat.widget.Toolbar无法转换为 androidx.appcompat.widget.Toolbar
【发布时间】:2020-11-23 17:13:34
【问题描述】:

每当我启动此活动并抛出错误时,我的应用程序就会崩溃:

原因:java.lang.ClassCastException:android.widget.Toolbar 无法转换为 androidx.appcompat.widget.Toolbar

以下是我的代码,我该如何解决?

package com.example.irecipe;

import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;

import android.os.Bundle

import android.widget.TextView;

public class RecipeActivity extends AppCompatActivity {

    Toolbar toolbar;
    TextView toolbar_title;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_recipe);

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

        toolbar_title = findViewById(R.id.toolBar_title);
        toolbar_title.setText("Recipe");

    }

}

【问题讨论】:

  • 在布局中使用 androidx 工具栏而不是支持工具栏。

标签: java android


【解决方案1】:

工具栏的 XML

<androidx.appcompat.widget.Toolbar
    android:id="@+id/toolbar"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@color/white_grey"
    android:minHeight="?attr/actionBarSize"
    app:menu="@menu/menu_top_right"
    app:titleTextColor="@android:color/white"/>

工具栏的 Java 代码

Toolbar toolbar;
toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);
    if (getSupportActionBar() != null) {
        getSupportActionBar().setTitle("");
    }

希望这对你有用,它已经过测试并且对我正常工作。

【讨论】:

    【解决方案2】:

    改变这个:

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

    到:

    toolbar = (Toolbar) findViewById(R.id.toolBar);
    

    【讨论】:

      【解决方案3】:

      从以下行中删除(androidx.appcompat.widget.Toolbar)toolbar = (androidx.appcompat.widget.Toolbar) findViewById(R.id.toolBar)

      【讨论】:

        【解决方案4】:

        原因:java.lang.ClassCastException:android.widget.Toolbar 无法转换为 androidx.appcompat.widget.Toolbar

        我有 2 个您可以尝试的解决方案:

        1. import androidx.appcompat.widget.Toolbar 的导入更改为import android.widget.Toolbar 并删除铸造,toolbar = findViewById(R.id.toolBar);
        2. &lt;android.widget.Toolbar...的布局实现更改为androidx.appcompat.widget.Toolbar...

        【讨论】:

          【解决方案5】:

          只要删除这个(androidx.appcompat.widget.Toolbar),它就会变成toolbar = findViewById(R.id.toolBar);

          【讨论】:

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