Android7.1 使用ToolBar, XML文件报错 androidx.appcompat.widget.Toolbar, was not found in the project解决方案

2023-11-14

完整报错信息:
Class referenced in the layout file, androidx.appcompat.widget.Toolbar, was not found in the project or the libraries 
Inspection info:If a class is referenced in the manifest or in a layout file, it must also exist in the project (or in one of the libraries included by the project. This check helps uncover typos in registration names, or attempts to rename or move classes without updating the XML references properly.  Issue id: MissingClass

整麻了..


问题描述:

为实现替换Android中的ActionBar->ToolBar,进行以下两步操作:

  1. 进入AndroidManifest.xml文件,按住Ctrl+鼠标左键进入android:theme="@style/Theme.(项目名)

        2.修改两个文件,变为:

<style name="Theme.(项目名)"parent="Theme.AppCompat.Light.NoActionBar">

或者No开头的那几个备选项。

然后,在布局文件toolbarlayout.xml(layout)中添加:

    <androidx.appcompat.widget.Toolbar
        android:id="@+id/tool_bar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
    </androidx.appcompat.widget.Toolbar>

然后就报错了..


解决过程

于是我反手将 

androidx.appcompat.widget.Toolbar

改成了以下的内容,也就是说换了个包就不报错了。

android.widget.Toolbar

 但,他喵的,在MainActivity中报错了。

报错语句为下面第二个函数,大意是这个函数需要传入类型为

import android.support.v7.widget.Toolbar;
toolbar = findViewById(R.id.tool_bar);
setSupportActionBar(toolbar);

 索性,我将 toolbarlayout.xml(布局文件)中的toolbar也改成了:

<android.support.v7.widget.Toolbar
        android:id="@+id/tool_bar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentStart="true"
        android:layout_alignParentTop="true"
        android:layout_alignParentEnd="true"
        android:layout_centerHorizontal="true"
        android:layout_marginStart="2dp"
        android:layout_marginTop="16dp"
        android:layout_marginEnd="4dp"
        android:background="?attr/colorPrimary"
        android:titleTextColor="@color/black">
</android.support.v7.widget.Toolbar>

终于他nainai的不报错了,最后也运行了起来。

在这过程中,还遇到了一个“waiting for all target devices to come online”卡住不动的问题,下面的博客也解决了: 解决waiting for all target devices to come online卡住不动、长时间不加载的情况_锦鲤AI幸运的博客-CSDN博客icon-default.png?t=M85Bhttps://blog.csdn.net/qq_37700257/article/details/116236193

为了防止文章看起来云里雾里,我把涉及到的能运行的代码贴出来,这个项目是Android的一次关于ToolBar使用的实验。(我的安卓版本是7,1)

 

AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools">

    <application
        android:allowBackup="true"
        android:dataExtractionRules="@xml/data_extraction_rules"
        android:fullBackupContent="@xml/backup_rules"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/Theme.Test4"
        tools:targetApi="31">

        <activity
            android:name=".MainActivity"
            android:exported="true">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>

            <meta-data
                android:name="android.app.lib_name"
                android:value="" />
        </activity>

        <activity
            android:name=".MainActivity2"
            android:exported="true">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>

            <meta-data
                android:name="android.app.lib_name"
                android:value="" />
        </activity>
    </application>

</manifest>

Mainactivity2.java

package com.example.test4;

import android.annotation.SuppressLint;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.TextView;
import android.widget.Toast;
import android.widget.*;
import android.support.v7.widget.Toolbar;

public class MainActivity2 extends AppCompatActivity {
    private TextView show;
    private Toolbar toolbar;
    //记录菜单项
    private final static int MENU_PRINT = 0x0100;
    private final static int NEW_FILE = 0x0200;
    private final static int EXIT = 0x0300;

    @SuppressLint("ResourceType")
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.toolbarlayout);

        toolbar = findViewById(R.id.tool_bar);
        setSupportActionBar(toolbar);

        //获取文本框
        show = findViewById(R.id.show);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        //菜单文件来自于res/menu/menus.xml
        getMenuInflater().inflate(R.menu.menus2, menu);
        return true;//return false it will not be shown
    }

    @SuppressLint("SetTextI18n")
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch(item.getItemId()){
            //通过id来辨别被点击的菜单选项
            case R.id.main_menu_0:
                show.setText("你点击了菜单项1,它的ID Number为"+item.getItemId());
                Toast.makeText(MainActivity2.this,item.getTitle(),Toast.LENGTH_LONG).show();
                break;
            case R.id.main_menu_1:
                show.setText("你点击了菜单项2,它的ID Number为:"+item.getItemId());
                Toast.makeText(MainActivity2.this,item.getTitle(),Toast.LENGTH_LONG).show();
                break;
            case R.id.main_menu_2:
                show.setText("你点击了菜单项3,它的ID Number为:"+item.getItemId());
                Toast.makeText(MainActivity2.this,item.getTitle(),Toast.LENGTH_LONG).show();
                finish(); break;
        }
        return super.onOptionsItemSelected(item);
    }




}

menu2.xml(在java文件 中引用)

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">
    <!-- 选项1 -->
    <item
        android:id="@+id/main_menu_0"
        android:title="打印"
        app:showAsAction="always|withText"
        android:icon="@android:drawable/btn_star_big_off"
        android:orderInCategory="1"/>
    <!-- 选项2 -->
    <item
        android:id="@+id/main_menu_1"
        android:title="新建文件"
        app:showAsAction="always|withText"
        android:icon="@android:drawable/btn_star_big_on"
        android:orderInCategory="2" />

    <!-- 选项3 -->
    <item
        android:id="@+id/main_menu_2"
        android:title="退出"
        app:showAsAction="always"
        android:icon="@android:drawable/ic_menu_help"
        android:orderInCategory="3"/>
</menu>

以及主要的布局文件 toolbarlayout.xml :

    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context=".MainActivity2">

        <android.support.v7.widget.Toolbar
            android:id="@+id/tool_bar"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_alignParentStart="true"
            android:layout_alignParentTop="true"
            android:layout_alignParentEnd="true"
            android:layout_centerHorizontal="true"
            android:layout_marginStart="2dp"
            android:layout_marginTop="16dp"
            android:layout_marginEnd="4dp"
            android:background="@color/purple_200"
            android:titleTextColor="@color/black">
        </android.support.v7.widget.Toolbar>

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@id/tool_bar"
            android:layout_centerInParent="true"
            android:layout_marginLeft="28dp"
            android:layout_marginTop="445dp"
            android:text="Hello World!" />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentTop="true"
            android:layout_centerHorizontal="true"
            android:layout_gravity="center"
            android:layout_marginTop="86dp"
            android:text="Android实验四ToolBar" />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentStart="true"
            android:layout_alignParentTop="true"
            android:layout_gravity="center_vertical"
            android:layout_marginStart="54dp"
            android:layout_marginTop="150dp"
            android:text="用户名" />

        <EditText
            android:id="@+id/inname"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentStart="true"
            android:layout_alignParentTop="true"
            android:layout_gravity="center"
            android:layout_marginStart="132dp"
            android:layout_marginTop="137dp"
            android:minHeight="48dp"
            android:text="请输入用户名.." />

        <TextView
            android:id="@+id/ipass"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentStart="true"
            android:layout_alignParentTop="true"
            android:layout_gravity="center"
            android:layout_marginStart="60dp"
            android:layout_marginTop="199dp"
            android:text="密码" />

        <EditText
            android:id="@+id/inpass"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentTop="true"
            android:layout_alignParentEnd="true"
            android:layout_gravity="center"
            android:layout_marginTop="188dp"
            android:layout_marginEnd="182dp"
            android:minHeight="48dp"
            android:text="请输入密码" />

        <Button
            android:id="@+id/ensure"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentStart="true"
            android:layout_alignParentTop="true"
            android:layout_gravity="center"
            android:layout_marginStart="71dp"
            android:layout_marginTop="276dp"
            android:text="确定" />

        <Button
            android:id="@+id/canceled"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentStart="true"
            android:layout_alignParentTop="true"
            android:layout_gravity="center"
            android:layout_marginStart="281dp"
            android:layout_marginTop="284dp"
            android:text="取消" />

        <TextView
            android:id="@+id/show"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentStart="true"
            android:layout_alignParentTop="true"
            android:layout_centerInParent="true"
            android:layout_gravity="center"
            android:layout_marginStart="142dp"
            android:layout_marginTop="353dp"
            android:text="这里将展示菜单选项" />

    </RelativeLayout>

运行结果:

 

最后,报错原因可能如引文所述..


References:

android.support.v7.app.AppCompatActivity不能使用的解决办法 - 时间进行的小宇 - 博客园 (cnblogs.com)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android7.1 使用ToolBar, XML文件报错 androidx.appcompat.widget.Toolbar, was not found in the project解决方案 的相关文章

随机推荐

  • @SpringQueryMap注解 feign的get传参方式

    SpringQueryMap注解 feign的get传参方式 问题 启动服务 传入参数测试 发现feign远程调用的方法入参失败 排查发现是feign接口调用controller方法的时候就没进来参 原因 spring cloud项目使用f
  • armeabi-v7a、arm64-v8a、armeabi、x86、x86_64的区别

    1 armeabi v7a 第七代及以上的ARM处理器 2011年以后生产的大部分Android设备都使用 2 arm64 v8a 第8代 64位ARM处理器 很少设备 三星GalaxyS6是其中之一 3 armeabi 第5代 第6代的A
  • go-zero 基础 -- 进阶指南

    版本 1 4 0 1 目录拆分 1 1 系统结构分析 在上文提到的商城系统中 每个系统在对外 http 提供服务的同时 也会提供数据给其他子系统进行数据访问的接口 rpc 因此每个子系统可以拆分成一个服务 而且对外提供了两种访问该系统的方式
  • FreeRTOS之软件定时器

    FreeRTOS之软件定时器 声明 本人按照正点原子的FreeRTOS例程进行学习的 欢迎各位大佬指责和批评 谢谢 include sys h include delay h include usart h include led h in
  • WIN7打开或关闭Windows功能后空白问题解决

    问题描述 打开或关闭Windows功能界面 一片空白 问题如下 解决方法 参考百度出来的几个办法 都无法解决 可能在下的系统的注册表问题比较严重 参考另一个方法 完美解决 windows7打开或关闭Windows功能后空白的问题 下载win
  • Python指南——类

    http blog csdn net ccat article details 8364 译者 至此Python指南的正文部分就全部译完了 感谢Clover姐姐 Sickkid 尹伟铭 面面 珂珂等朋友在翻译过程中给我提供的帮助和支持 特别
  • 用nodejs到底做什么?

    如何解决学了之后无法解决问题的状态 前端的内容很多 有html css javascript三个大模块 但是如何能去解决问题 核心还是根据你的兴趣 或者你根据一个你能看到的实际项目好好研究一下代码 了解其中运作的机制 然后尝试着修改一下代码
  • EduCoder_web实训作业--CSS样式规则

    由于时间关系 我只写第四题啦 2020 12 31 已将缺失关卡补全 第一关 B D C A B 第二关 h1 style font family 楷体 text align center line height 2 静夜思 h1 h2 s
  • Pandas数据处理与分析

    文章目录 前言 1 导入数据 2 审阅数据 3 数据预处理 4 数据分析 5 pandas数据可视化 这里不再过多的讲解pandas可视化 因为pandas中的数据可视化已经可以满足我们大部分的要求了 也就省下了我们很多自己使用 如 mat
  • flume实验

    1 上传flume ng 1 5 0 cdh5 3 6 tar gz 至 opt modules cdh 并解压 2 编辑 conf flume env sh export JAVA HOME usr java jdk1 7 0 79 3
  • 串口通信与编程01:串口基础知识

    串口通信与编程01 串口基础知识 串口是串行接口 serial port 的简称 也称为串行通信接口或COM接口 串口通信是指采用串行通信协议 serial communication 在一条信号线上将数据一个比特一个比特地逐位进行传输的通
  • Nginx学习笔记3【老男孩教育】

    Nginx模块使用 autoindex网站列表功能 下载功能子配置文件 修改nginx子配置文件 限制模块 认证模块 创建用户名和密码 状态模块 location功能 Goaccess日志分析 模块总结
  • 华为OD机试真题 Java 实现【最小的调整次数】【2023Q1 100分】

    一 题目描述 有一个特异性的双端队列 该队列可以从头部或尾部添加数据 但是只能从头部移出数据 小A依次执行2n个指令往队列中添加数据和移出数据 其中n个指令是添加数据 可能从头部添加 也可能从尾部添加 依次添加1到n n个指令是移出数据 现
  • 小学期-中期总结报告

    实训中期总结报告 一 人文 本次实训采取讲练结合的方式 四次讲座分别介绍了实训整体要求安排 开发环境与流程 实验板的硬件电路 单片机原理 随着进度循序渐进 在实践方面 参观贴片整体流程 自己动手焊接电路板 下载实例进行学习 各个案例按照I
  • 使用 npm link 测试本地编写的 node 模块 / 引入全局安装的 node 模块

    目录 1 npm install VS npm install g 2 npm install g 的本质 映射脚本的作用 3 如何测试使用未发布的 npm 包 npm link 原理 4 link 到项目 4 1 全局 link 4 2
  • 2023最新51单片机毕设选题推荐

    文章目录 1前言 2 STM32 毕设课题 3 如何选题 3 1 不要给自己挖坑 3 2 难度把控 3 3 如何命名题目 4 最后 1前言 更新单片机嵌入式选题后 不少学弟学妹催学长更新STM32和C51选题系列 感谢大家的认可 来啦 以下
  • 常见排序算法的时间复杂度、空间复杂度、稳定性比较

    常见排序算法的时间空间复杂度 稳定性比较 一 排序算法比较 注 1 归并排序可以通过手摇算法将空间复杂度降到O 1 但是时间复杂度会提高 2 基数排序时间复杂度为O N M 其中N为数据个数 M为数据位数 二 辅助记忆 1 时间复杂度记忆
  • vue中页面自动刷新

    当我们在做项目时 我们需要做当前页面的刷新来达到数据更新的目的 在此大概总结了几种常用的页面刷新的方法 1 window location reload 是原生JS提供的方法 this router go 0 是vue路由里面的一种方法 这
  • 在Ubuntu上搭建samba服务器实现文件共享

    通常情况下Ubuntu通过开启共享文件夹只能实现Windows和Ubuntu的文件共享 而在Ubuntu上搭建samba服务器则可以实现同一局域网下不同操作系统文件共享 实现更多便捷操作 以下总结了在Ubuntu上搭建samba服务器的具体
  • Android7.1 使用ToolBar, XML文件报错 androidx.appcompat.widget.Toolbar, was not found in the project解决方案

    完整报错信息 Class referenced in the layout file androidx appcompat widget Toolbar was not found in the project or the librari