概述 我们在使用Android Studio创建Activity、Fragment等等的时候,都会使用Android Studio提供的模板来简化我们创建的,使用模板时,我们只要做简单的配置,Android...介绍 Android Studio模板的安装路径: /plugins/android/lib/templates ? ?...模板文件结构 Android Studio中已有的 EmptyActivity模板: ?...说明: 中的 name对应新建 Activity时显示的名字 对应New的类别为 Activity 对应界面上蓝色框的一个项, id:唯一表示...自定义MVP模板 在Google给出的MVP Sample中,每创建一个页面,需要创建: XxActivity、 XxFragment、 XxContract、 XxPresenter四个文件,步骤繁琐
文章目录 一、报错信息 二、解决方案 一、报错信息 ---- 在 Kotlin 代码中调用 findViewById(R.id.button) 代码 , 编译时报如下错误信息 : Not enough...information to infer type variable T 上午还能编译 , 下午更新了下支持库到 28.0.0 就出现上述错误 ; 按照当前的 Kotlin 规范 , 重新修改 Kotlin...的相关代码 ; 二、解决方案 ---- 将组件查找代码修改为如下形式 , 添加泛型 ; findViewById(R.id.button)
前言: 最近在做一个Android相关的小项目,因为之前这方面的项目做的比较的少。今天在使用虚拟机调试的时候经常出现一些莫名其妙的问题,经过自己多次的尝试和搜索终于解决了这些问题。...问题: 每次run(运行)项目在android Emulator一直显示黑屏问题,如下如所示: ? 可能是没有检测到匹配的虚拟设备(unknown devices): ?...解决方案: 重新创建一个新的虚拟设备(Create virtural devices),下载,安装:点击Android Virtual Device Manager(虚拟设备管理)按钮>Create...最后选择刚安装的虚拟设备运行android项目: ? 黑屏问题成功解决,项目界面正常展示: ? ?
:recyclerview-v7:28.0.0' 凡是 Kotlin 语言涉及到的支持库代码 , 出现了一堆报错 ; 二、报错分析 ---- 此处继承了 RecyclerView.ItemDecoration...{ super.getItemOffsets(outRect, view, parent, state) } 注意重写的方法中 , 参数类型 outRect...都是可空类型 ; 查看 ItemDecoration 真实代码 , 其中的 getItemOffsets 方法的四个参数都是非空类型 , 添加了 @NonNull 注解 , 因此这里必须传入非空参数 ,...RecyclerView.LayoutParams)view.getLayoutParams()).getViewLayoutPosition(), parent); } } 三、解决方案 Google 在之前的支持库方法的参数中..., 没有添加 @NonNull 注解 , 在 28.0.0 版本中 , 添加了该注解 , 导致了继承不兼容的情况 ; 修改方法是将所有的参数类型都设置为非空类型 , 删除每个参数中的问号即可 ;
Kotlin的一个协程可以理解为是运行在线程上的一个执行任务并且该任务可以在不同的线程间切换,一个线程可以同时运行多个协程。...从开发者角度来看:kotlin协程可以实现以同步的方式去编写异步执行的代码,解决线程切换回调的嵌套地狱。 协程挂起时不需要阻塞线程,几乎是无代价的。...比如:网络请求,数据库操作,文件操作等 Main:UI调度器,只有在UI编程平台上有意义,用于更新UI,例如Android中的主线程 Unconfined:非受限调度器,无所谓调度器,当前协程可以运行在任意线程上...最常见的,网络请求在IO线程,而页面更新在主线程。 Kotlin给我们提供了一个顶层函数withContext用于改变协程的上下文并执行一段代码。...Kotlin协程最大的优势就是以同步的方式写异步代码,这就是通过挂起函数用来实现。
文章目录 一、报错信息 二、解决方案 一 ( 备选方案 ) 三、解决方案 二 ( 推荐方案 ) 一、报错信息 ---- 为了解决 【错误记录】Flutter 构建报错 ( Because xxx requires...SDK version >=2.12.0-0 <3.0.0, versio | Dart SDK 版本低 ) 中的问题 , 更新了 Flutter 与 Dart SDK ; 更新后出现该问题 , main.dart...; 在 Project Structure 对话框中的 Project 选项卡中配置 Android SDK ; Library 选项卡的 Flutter 和 Dart SDK ; Facts...选项卡的 Android 配置 , 参考 【错误记录】Android Studio 的 Flutter 代码界面没有 Logcat 面板 配置 ; 配置完毕 , 重启 Android Studio 即可解决该问题...的 " Enable Dart support for the Project xxx " 选项 , 否则就会出现不显示设备栏的情况 ;
大家好,又见面了,我是你们的朋友全栈君。 在.gradle目录中,修改init.gradle文件,修改其中的maven地址。...在.m2目录中,修改settings.xml文件,修改其中的maven地址。
文章目录 一、 报错信息 二、 解决方案 一、 报错信息 ---- 从 GitHub 上将代码克隆到本地 , 调试程序时发现 , 没有 Logcat 面板 , 到菜单栏 / View / Tool Windows...中也没有看到 Logcat 面板设置 ; 二、 解决方案 ---- 注意观察当前界面已经连的设备中显示的是 " Loading Devices " , 说明是 Android 设备相关设置问题 ;...选择 菜单栏 / File / Project Structure 选项 , 在 " Project Structure " 对话框中可以看到没有配置 Project SDK , 这里配置一个...Android SDK ; 配置 Android SDK 后 , 点击 Apply 应用按钮 , 然后点击 OK 按钮 , 此时应用会重新构建 ; 然后切换到 " Facets " 选项卡 , 点击图中的..." + " 加号按钮 , 在弹出的下拉菜单中选择 " Android " 选项 , 在之后弹出的 " Choose Module " 对话框中 , 选择本 Module 应用 , 出现如下界面
问题 不知道怎么 app 对应的进程在 Android Monitor / DDMS 中都看不到了,想调试或者看个日志都不行。...分析 一般我们在输出日志时都会根据是否为 debug 统一控制,这样可以避免在 生产包 中大量输出日志,不安全不说,也影响性能。...Android 系统应该也是这么考虑,默认情况下 进程不可调试,不输出 log,需要我们手动设置为可调试模式。...解决办法 1.在 app/build.gradle 的 中添加(一般在 debug 环境下) debuggable true 2.或者在 AndroidManifest 文件的 application...标签下添加(不建议) android:debuggable="true" 我是不知道什么时候被同事悄悄地修改了 渠道,半天才发现!
io.reactivex.rxjava2:rxandroid:2.0.2' implementation 'io.reactivex.rxjava2:rxjava:2.1.10' Github地址 使用 延迟执行 Kotlin...TimeUnit.MILLISECONDS) .observeOn(AndroidSchedulers.mainThread()) .subscribe { } 多线程 常用的方式是分线程中处理数据...,主线程中使用数据生成页面 Kotlin Observable .create> { source -> var treeList
您的 Kotlin 代码在调用 SDK 中任一已注解的 API 时,可完好保留空值安全保证。...而使用 Java 的开发者也可以利用 Android Studio 捕捉可空合约违规行为,从而有效利用这些可空性注解。 小变化 大改善 通常情况下,Kotlin 中违反可空性协议时会导致编译错误。...近期加入的可空性注解只会产生警告而非错误,但在下一年度的 Android SDK 中 ,我们将提高错误严重等级。此举的目的是为了给开发者预留出足够时间调整代码。...△ 凹口编码违反 Android SDK 中新添加的可空性协议时, Kotlin 编译器所显示的警告示例 此外,如果您调用的 Android API 不符合可空性要求,Android Studio 的代码编辑器上同样会显示相关警告...在默认状态下,Android Studio 会显示违反可空性协议的警告,具体示例如下: ?
2.然后安装Andorid Studio,都是一键安装的即可。...然后打开android studio(简称AS)新建一个flutter项目,然后AS会选择gradle构建项目,下载一些必要的package,这时候就开始有很多坑了。..._3.3.9-stable\flutter\packages\flutter_tools\gradle 下的配置文件,叫做flutter.gradle 打开之后是这个样子: 大概是一千行代码 我们要改的地方是这里...* In an app project, this is ../.. since the app's build.gradle is under android/app. */...:gradle:4.1.0' } } 这个是默认的原配置文件的内容 那么我们要在第31行的下面新增一些地址: maven { url 'https://maven.aliyun.com/repository
测试代码: 1.Java 中直接使用 Java 8 的 Stream API: package i; import java.util.ArrayList; import java.util.List...:12 655269092 单线程计算耗时:3350 ms 655269092 多线程计算耗时:425 ms 2.Kotlin 使用 Java 8 的 Stream API: package i...parallel().reduce { t: Int, u: Int -> t + u }.get() } 运行结果: 655149583 parallelSum Time:2911ms 看起来,Kotlin...使用Java 8 的 parallel Stream API,似乎没有明显的性能提升(猜测:中间有Java-Kotlin互转带来的性能损耗?)。...3.直接使用Kotlin的 List的API: package i import java.util.* /** * @author: Jack * 2020-05-06 16:03 */
Either:错误处理的类型安全革命传统错误处理的痛点:// 错误信息丢失,无法区分错误类型fun parseUser(json: String): User?...IO Monad:副作用管理的艺术传统异步代码的问题:// 回调地狱示例fun fetchData() { api.getUser { user -> if (user !...编译时安全保障:通过类型系统消除运行时异常声明式代码结构:业务逻辑清晰可见强大的组合能力:通过map/flatMap构建复杂流程卓越的调试体验:可追踪的异步操作链与Kotlin协程深度集成:无缝接入现代...Android开发总结:构建面向未来的Android应用通过Arrow库,我们实现了:️ 可靠的错误处理:类型安全的Either取代传统异常� 声明式副作用管理:IO Monad统一处理异步操作 可组合的业务逻辑...:通过函数组合构建复杂流程 可维护的代码结构:纯函数带来的可测试性迁移路线建议:从工具类开始试验Option/Either逐步改造网络层返回类型在复杂业务流中引入IO Monad最后处理UI层的状态映射
Kotlin 真的是一门美丽的开发语言,她拥有的一些很棒的特性使 Android 开发变成的有趣和令人兴奋。...如你所见,委托属性并没有什么神奇的。但是,它虽然简单,却非常有用,让我们来看一些在 Android 开发中的例子。 你可以在官方文档中了解更多关于委托属性的内容。...我们把这个类型设为非空的,并且在不能读取时抛出了异常,这让我们可以在 Fragment 中获取非空的值,避免了空值检查。...Android Extension的视图绑定来获取布局中的控件。...总结 我们看来一些在 Android 开发中使用 Kotlin 委托属性的例子。当然了,你也可以用别的方式来使用它。 这篇文章的目标是展示委托属性是多么强大,以及我们可以用它做什么。
文章目录 一、报错信息 二、解决方案 一、报错信息 ---- 更新了 Android Studio 到 4.2.1 , 打开之前的老项目 , 部分界面是由 Kotlin 开发的 , 进入 Kotlin...开发的界面报错 , 进入 Java 开发的界面正常 ; 此外 , Kotlin 升级到了 1.5.0 ; Android Studio 4.2.1 编译报错 , 凡是调用到 Kotlin 的 Activity...界面 , 都爆如下异常 ; Java 代码的 Activity 正常运行 ; 2021-06-02 15:10:31.521 32223-32223/com.example.demo E/AndroidRuntime..., 查看具体的配置与 老项目的 配置区别 : plugins { id 'com.android.application' id 'kotlin-android' } android...:espresso-core:3.0.2' } 发现在 Module 下的 build.gradle 构建脚本中 , " android " 层级下 , 配置如下选项 ; compileOptions
文章目录 一、报错信息 二、解决方案 一、报错信息 ---- 在 Android Studio 工程中 , 编辑 build.gradle 脚本时 , 无法进行代码提示 ; 按住 Ctrl 键 , 点击相应的属性...go to " 报错信息 ; 二、解决方案 ---- 查看 " gradle\wrapper\gradle-wrapper.properties " Gradle 配置 , 确保 Gradle 的版本是..." gradle-x-all.zip " , 不能是 " gradle-x-bin.zip " , 否则没有完整代码 , 不能进行提示 ; 在命令行中 , 执行 gradlew 命令 , 下载相关的依赖...WorkSpace\001_AS\SVG> 选择 " 菜单栏 / File / Sync Project with Gradle Files " 选项 , 同步 Gradle 文件 ; 执行完上述操作后 , 在...build.gradle 中即可进行代码提示 ;
大家好,在写安卓的时候我这边只写前端的简单页面,在写跳转的时候就开始报错了,本人看了好几天也没定位到错误,希望各位大神遇到的多多指点。...super.onCreate(savedInstanceState); setContentView(R.layout.activity_to); } 自己还写了一点页面的代码就不贴...,每次报错都是在这边出来的望大神指点 此问题月已解决 在这里犯了一个比较初级的错误 代码的位置放错拉 Button button = (Button) findViewById(R.id.button1...com.lenovo.myapplication; import android.content.Intent; import android.support.v7.app.AppCompatActivity...; import android.os.Bundle; import android.view.View; import android.widget.Button; public class MainActivity
无论是那个编辑器,如果能够添加一些自定义代码片段,能够大大提升代码的输入效率。 本文介绍如何在 Visual Studio Code 中添加自定义代码片段。...Visual Studio Code 的代码片段设置 你可以在 Visual Studio Code 的菜单中找到代码片段的设置入口,在 File -> Preferences -> User Snippets...打开快捷命令输入框进入 Insert Snippet 命令,输入 toc 可以看到我们刚刚加入的代码片段: 或者,在带有智能感知提示的文件中,可以直接通过智能感知提示插入: 在插入的代码片段中,...在 Visual Studio Code 中,你有这些变量可以使用: -TM_SELECTED_TEXT - 在插入代码片段的时刻选中的文本 -TM_CURRENT_LINE - 在插入代码片段的时刻光标所在的行...当前文档的完全路径 -CLIPBOARD - 剪贴板中的内容 -CURRENT_YEAR - 年 -CURRENT_YEAR_SHORT - 两位数字显示的年 -CURRENT_MONTH - 月,如
编辑器中复制了源码; > 然后直接粘贴在 csdn 的 MarkDown 编辑器中(当然是代码块中!)...; > 文章保存发表后,发现直接复制博客代码内容粘贴在自己的 PHPStorm 中时; > 排查问题发现 “onclick” 这个单词中 “o” 会失效; > 解决方法也不难,就是重新打出这个单词呗...更奇葩的现象是,即便我在 MarkDown 编辑器中手动打出这个单词,保存发布后依然存在问题!...【注意】 在此提示一下,其实文章前期,并没有出现这种问题, 因为有段时间我也是自己复制所写过的源码,但是大概在三个月前出的的这种情况 也是超级一脸懵逼… 附录【2020-07-13】 ①...推测 本人推测可能是这些单引号双引号对 js代码产生的影响 因为单纯 只有 “onclick” 这个词是没问题的哦 希望不是我操作出现的BUG,不然可就丢人咯,哈哈哈 … ?