新版AndroidStudio通过系统快捷创建带BottomNavigationView的项目踩坑记录

 选择上面这个玩意创建的项目

坑点1 :配置的写法和不一样了

镜像的写法:

新的settings.gradle.kts中配置镜像的代码:

pluginManagement {repositories {mavenCentral()google {content {includeGroupByRegex("com\\.android.*")includeGroupByRegex("com\\.google.*")includeGroupByRegex("androidx.*")}}maven("https://jitpack.io")maven("https://maven.aliyun.com/repository/gradle-plugin")maven("https://maven.aliyun.com/repository/releases")maven("https://maven.aliyun.com/repository/jcenter")maven("https://maven.aliyun.com/repository/google")maven("https://maven.aliyun.com/repository/central")maven("https://maven.aliyun.com/repository/public")gradlePluginPortal()}
}
dependencyResolutionManagement {repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)repositories {mavenCentral()google()
//        maven{
//            url = uri("https://jitpack.io")
//        }maven("https://jitpack.io")maven("https://maven.aliyun.com/repository/gradle-plugin")maven("https://maven.aliyun.com/repository/releases")maven("https://maven.aliyun.com/repository/jcenter")maven("https://maven.aliyun.com/repository/google")maven("https://maven.aliyun.com/repository/central")maven("https://maven.aliyun.com/repository/public")}
}rootProject.name = "XXX" //自己的名称
include(":app")
 导包的写法:

最新导包是使用toml文件来配的

比如我想导入的包是:com.github.getActivity:ShapeDrawable:3.0

那么就需要在libs.versions.toml中这样写:

。。。
shapeDrawable = "3.0"[libraries]
。。。
shapedrawable = { group = "com.github.getActivity", name = "ShapeDrawable", version.ref = "shapeDrawable"}。。。

在app下的build.gradle中这样使用:

dependencies {
。。。implementation(libs.shapedrawable)
。。。
}

坑点2:导航栏的问题

这个方式创建的项目需要带导航栏 (seekBar ?记不太清),如果你再AndroidManifest文件的application中将主题设置为无导航栏的主题(NoActionBar或者自己定义的无导航栏主题)的话,编译会报错 :

 Process: net.zhineng.liumanager, PID: 26836
java.lang.RuntimeException: Unable to start activity ComponentInfo{net.zhineng.liumanager/net.zhineng.liumanager.MainActivity}: java.lang.IllegalStateException: Activity 包名.MainActivity@c355c7d does not have an ActionBar set via setSupportActionBar()                                                                                             

解决办法:使用系统自带的DarkActionBar主题 ,再使用代码隐藏,缺点是每个activity中都要写隐藏代码

//kotlin
supportActionBar!!.hide()//java
if (getSupportActionBar() != null) {getSupportActionBar().hide();
}

 【Android】does not have an ActionBar set via setSupportActionBar()-CSDN博客

 坑点3.findNavController方法报错:

  java.lang.RuntimeException: Unable to start activity ComponentInfo{net.zhineng.liumanager/net.zhineng.liumanager.MainActivity}: java.lang.IllegalStateException: Activity 你的包名.MainActivity@22742e6 does not have a NavController set on 2131231061

解决办法:添加initNavController方法的代码

class MainActivity : AppCompatActivity() {private lateinit var binding: ActivityMainBindingoverride fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)binding = ActivityMainBinding.inflate(layoutInflater)setContentView(binding.root)supportActionBar!!.hide()val navView: BottomNavigationView = binding.navViewval navController = findNavController(R.id.nav_host_fragment_activity_main)val appBarConfiguration = AppBarConfiguration(setOf(R.id.navigation_home, R.id.navigation_dashboard, R.id.navigation_notifications))setupActionBarWithNavController(navController, appBarConfiguration)navView.setupWithNavController(navController)}fun initNavController() {//获取mFragments成员变量val mFragmentsField = FragmentActivity::class.java.getDeclaredField("mFragments").apply {isAccessible = true}//获取mCreated成员变量val mCreatedField = FragmentActivity::class.java.getDeclaredField("mCreated").apply {isAccessible = true}//获取dispatchActivityCreated方法val dispatchActivityCreatedMethod =FragmentController::class.java.getDeclaredMethod("dispatchActivityCreated").apply {isAccessible = true}//调用dispatchActivityCreated方法dispatchActivityCreatedMethod.invoke(mFragmentsField.get(this))//别忘了把mCreated设置为true,防止dispatchActivityCreated在onStart中再次调用mCreatedField.set(this, true)}
}

 Android Navigation 报错does not have a NavController set on xxxxx 解决方案-CSDN博客

   坑点4:webView加载写死的Url时加载不出网址

原因:

        webView不允许加载显示的url,既http://这样的链接        

        没有申明网络权限

解决方法

        关于第一条的 ,条件允许可以直接将http改为https 看能不能加载,不行的话就使用我找到的别的大佬的方法试试:

【已解决】Android WebView net::ERR_CLEARTEXT_NOT_PERMITTED_android webview 域名异常-CSDN博客           第二条:网络权限在AndroidManifest文件中静态申请一下就行

    <uses-permission android:name="android.permission.INTERNET" />

      坑点5: 编译报错: Execution failed for task ':app:checkDebugDuplicateClasses'.

解决方法:

项目的gradle.properties文件中添加一行代码:

android.enableJetifier = true

 好了上面就是我做这个项目碰到的所有问题了,代码这个东西确实是一点点都不能错,dk、gradle 版本以及jdk的版本都要相互对应 ,一个高了或者低了都会导致出问题,项目里面配置的信息也要保证兼容,一招不慎就是全屏标红,这简直是我这种小白的恶梦,这时候就要感谢发布攻略,教程的各位大佬们了,每次碰到的问题一般都有前辈踩坑解决了,感谢各位大佬!所以我也会来总结一下,一方面可以以后自己碰到了回来抄代码,另一方面也希望我的这些经验可以帮助到后来者,不骄不躁,我们共同成长吧!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/892699.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SAP资产盘盈盘亏的过账处理、入账价值错误调整、资产减值准备

文章目录 一、SAP资产盘盈盘亏处理1、ABNAN盘盈 &#xff08;往年资产&#xff09; ABZON (当年资产&#xff09;2、ABAVN盘亏 二、资产价值入账错了&#xff08;价值多了或少了&#xff09;&#xff0c;怎么调账1、价值少了2、价值多了 三、资产减值准备1、启用重估2、指定间隔…

炸砖块游戏的最终图案

描述 小红正在玩一个“炸砖块”游戏,游戏的规则如下:初始有一个 n * m 的砖块矩阵。小红会炸 k 次,每次会向一个位置投炸弹,如果这个位置有一个砖块,则砖块消失,上方的砖块向下落。小红希望你画出最终砖块的图案。 输入描述 第一行输入三个正整数 n, m, k,代表矩阵的行…

【Python项目】图像信息隐藏技术的实现

【Python项目】图像信息隐藏技术的实现 技术简介&#xff1a;采用Python技术、MYSQL数据库等实现。 系统简介&#xff1a;系统主要的功能有登录模块、对个人信息的维护模块、图片信息的隐藏模块涉及图片的上传和信息的验证。 背景&#xff1a; 在当今时代&#xff0c;信息技术…

游戏市场成果及趋势

2024 年的游戏行业发展情况如何&#xff1f;这是一个既关系到开发商&#xff0c;又关系到玩家的问题&#xff0c;而市场分析师可以为我们揭晓答案。下面&#xff0c;就让我们来看看分析师给出的结论以及他们对未来趋势的预测。 玩家 自 2021 年起&#xff0c;全球平均游戏时间…

【算法学习】——整数划分问题详解(动态规划)

&#x1f9ee;整数划分问题是一个较为常见的算法题&#xff0c;很多问题从整数划分这里出发&#xff0c;进行包装&#xff0c;形成新的题目&#xff0c;所以完全理解整数划分的解决思路对于之后的进一步学习算法是很有帮助的。 「整数划分」通常使用「动态规划」解决&#xff0…

深入理解计算机系统阅读笔记-第十二章

第12章 网络编程 12.1 客户端-服务器编程模型 每个网络应用都是基于客户端-服务器模型的。根据这个模型&#xff0c;一个应用时由一个服务器进程和一个或者多个客户端进程组成。服务器管理某种资源&#xff0c;并且通过操作这种资源来为它的客户端提供某种服务。例如&#xf…

Redis 实战篇 ——《黑马点评》(中)

《引言》 &#xff08;中&#xff09;篇将接着记录 Redis 实战篇 ——《黑马点评》&#xff08;上&#xff09;篇之后的学习内容与笔记&#xff0c;希望大家能够点赞、收藏支持一下 ᕦ(&#xff65;ㅂ&#xff65;)ᕤ&#xff0c;谢谢大家。 传送门&#xff08;上&#xff09;&…

【2024年华为OD机试】(A卷,100分)- 猜字谜(Java JS PythonC/C++)

一、问题描述 小王设计了一个简单的猜字谜游戏&#xff0c;游戏的谜面是一个错误的单词&#xff0c;比如 nesw&#xff0c;玩家需要猜出谜底库中正确的单词。猜中的要求如下&#xff1a; 对于某个谜面和谜底单词&#xff0c;满足下面任一条件都表示猜中&#xff1a; 变换顺序…

ip属地是根据手机号还是位置

在数字化时代&#xff0c;IP地址作为网络世界中的“门牌号”&#xff0c;其属地信息往往与用户的地理位置紧密相关。然而&#xff0c;关于IP属地是如何确定的&#xff0c;是否依赖于手机号还是实际位置&#xff0c;这一话题时常引发讨论。本文将深入探讨IP属地的确定方式&#…

nginx 实现 正向代理、反向代理 、SSL(证书配置)、负载均衡 、虚拟域名 ,使用其他中间件监控

我们可以详细地配置 Nginx 来实现正向代理、反向代理、SSL、负载均衡和虚拟域名。同时&#xff0c;我会介绍如何使用一些中间件来监控 Nginx 的状态和性能。 1. 安装 Nginx 如果你还没有安装 Nginx&#xff0c;可以通过以下命令进行安装&#xff08;以 Ubuntu 为例&#xff0…

React性能优化: 使用React.lazy与Suspense提高加载效率

## 1. React.lazy与Suspense简介 在开发React应用程序时&#xff0c;我们经常会遇到需要加载大型组件或者数据的情况。为了提高页面加载的效率&#xff0c;React引入了React.lazy和Suspense这两个特性。 什么是React.lazy&#xff1f; 是React 16.6版本引入的新特性&#xff0c…

Golang笔记——Interface类型

大家好&#xff0c;这里是Good Note&#xff0c;关注 公主号&#xff1a;Goodnote&#xff0c;专栏文章私信限时Free。本文详细介绍Golang的interface数据结构类型&#xff0c;包括基本实现和使用等。 文章目录 Go 语言中的 interface 详解接口定义实现接口空接口 interface{}示…

轨迹优化 | 基于贝塞尔曲线的无约束路径平滑与粗轨迹生成(附ROS C++/Python仿真)

目录 0 专栏介绍1 从路径到轨迹2 基于贝塞尔曲线的粗轨迹生成2.1 路径关键点提取2.2 路径点航向角计算2.3 贝塞尔曲线轨迹生成 3 算法仿真3.1 ROS C仿真3.2 Python仿真 0 专栏介绍 &#x1f525;课设、毕设、创新竞赛必备&#xff01;&#x1f525;本专栏涉及更高阶的运动规划…

理解STC15F2K60S2单片机的最小电路

一、STC15F2K60S2与51单片机的区别 STC15F2K60S2和51单片机虽然都基于8051内核&#xff0c;但在多个方面存在显著区别&#xff1a; 1. CPU性能&#xff1a; - STC15F2K60S2&#xff1a;采用增强型8051 CPU&#xff0c;1T单时钟/机器周期&#xff0c;速度比普通8051快8-12倍…

VSCode 搜索 搜不到

VSCode 搜索 搜不到 今天打开一个新的工作目录之后 ctrl P 搜文件 搜不到 经观察后发现 当我搜索时候&#xff0c; 右侧搜索按钮有一个时钟标识&#xff0c;疑似 搜索的范围 是最近打开内容。 经过和全局搜索的编辑器对比设置后发现&#xff0c;把设置中 下图中 选项去掉勾选…

软件测试 —— Selenium常用函数

软件测试 —— Selenium常用函数 操作测试对象点击/提交对象 click()模拟按键输入 send_keys("")清除文本内容 clear() 模拟用户键盘行为 Keys包示例用法 获取文本信息 textget_attribute("属性名称") 获取当前页面标题 title获取当前页面的 url current_u…

Vue 学习之旅:核心技术学习总结与实战案例分享(vue指令下+计算属性+侦听器)

Vue 学习之旅&#xff1a;核心技术学习总结与实战案例分享 文章目录 Vue 学习之旅&#xff1a;核心技术学习总结与实战案例分享一、指令补充&#xff08;一&#xff09;指令修饰符&#xff08;二&#xff09;v-bind 对样式操作的增强&#xff08;三&#xff09;v-model 应用于其…

UE5 打包项目

UE5 打包项目 flyfish 通过 “文件”->“打开项目”&#xff0c;然后在弹出的对话框中选择项目文件&#xff08;通常是以.uproject为后缀的文件&#xff09; 选择目标平台&#xff1a; 在 UE5 主界面中&#xff0c;找到 “平台”&#xff08;Platforms&#xff09;。根据…

1. Doris分布式环境搭建

一. 环境准备 本次测试集群采用3台机器hadoop1、hadoop2、hadoop3, Frontend和Backend部署在同一台机器上&#xff0c;Frontend部署3台组成高可用&#xff0c;Backend部署3个节点&#xff0c;组成3副本存储。 主机IP操作系统FrontendBackendhadoop1192.168.47.128Centos7Foll…

win10电脑 定时关机

win10电脑 定时关机 https://weibo.com/ttarticle/p/show?id2309405110707766296723 二、使用任务计划程序设置定时关机打开任务计划程序&#xff1a; 按下“Win S”组合键&#xff0c;打开搜索框。 在搜索框中输入“任务计划程序”&#xff0c;然后点击搜索结果中的“任务…