06 2025 档案
摘要:一,报错信息 # systemctl start openvpn-server@.service Failed to start openvpn-server@.service: Unit name openvpn-server@.service is missing the instance na
阅读全文
摘要:一,代码 class VmListActivity : AppCompatActivity() { private lateinit var binding: ActivityVmListBinding //binding override fun onCreate(savedInstanceSta
阅读全文
摘要:一,代码: class VmListActivity : AppCompatActivity() { private lateinit var binding: ActivityVmListBinding //binding override fun onCreate(savedInstanceSt
阅读全文
摘要:一,代码: //处理按钮点击事件 binding.button.setOnClickListener { val p = 3 val token = "thistokenname" val params = mutableMapOf<String, Any>( "p" to p, "count" t
阅读全文
摘要:一,代码 override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) enableEdgeToEdge() //使用binding binding = ActivityVmListBi
阅读全文
摘要:一,代码: activity xml: <?xml version="1.0" encoding="utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.co
阅读全文
摘要:一,说明: by lazy 是一种懒加载模式,也就是说变量的值并不是在声明的时候赋值的,而是在真正用到这个变量的时候,才会加载它,也就是为它赋值。并且第一次赋值后会记录好这个值,以后的访问,都会直接返回这个值。by lazy 模式只会执行一次赋值操作,也就是首次用到变量的时候,变量一旦被赋值后,就不
阅读全文
摘要:一,代码: 说明: abstract 关键字用于在Kotlin中声明抽象类。无法实例化抽象类(不能创建抽象类的对象)。但可以从它们中继承子类 非抽象属性 age和非抽象方法: 如果您需要在子类中覆盖这些成员,则应使用 open 关键字标记它们。抽象方法 : 它没有任何实现,必须在其子类中重写。 注意
阅读全文
摘要:一,代码: 类: package com.example.okdemo1.model //方式一:使用var、val自动声明初始化 class Demo1(var id: Int, var name: String) { //实在需要也可以再写init{}代码块做一些逻辑 init{ println
阅读全文
摘要:一,引入lifecycle相关库 1,在项目根目录下的build.gradle中配置脚本,增加: buildscript{ ext { lifecycle = "2.5.1" } } 编辑app下的build.gradle,增加: // lifecycle相关 api "androidx.lifec
阅读全文
摘要:一,lateinit的作用 1、特性 修饰可变变量:仅用于 var 声明。 手动初始化:开发者需在适当位置(如生命周期回调)显式初始化。 非空类型:只能用于非空类型(如 String、View),不支持基本数据类型(如 Int、Boolean)。 异常风险:访问未初始化的变量会抛出 Uninitia
阅读全文
摘要:一,代码例子: package com.example.okdemo1.activity import android.os.Bundle import android.widget.Button import androidx.activity.enableEdgeToEdge import an
阅读全文
摘要:一,两者的区别 主构造函数在类名后面使用constructor关键字声明,并且不能做任何操作,初始化可以在init代码块中进行在构造函数不具有注释符或者默认的可见性修饰符时,constructor关键字可以省略。 辅助构造函数需要使用constructor关键字声明,并且直接或者通过别的辅助函数调用
阅读全文
摘要:一,data类和普通类的区别 1, 主构造函数必须至少有一个参数,且参数标记为 val 或 var 数据类的主构造函数必须至少有一个参数,并且这些参数必须使用 val 或 var 声明。普通类则没有这样的要求。 2,数据类自动生成了以下方法: toString():生成格式化的字符串表示,如:Use
阅读全文
摘要:一,代码: package com.example.okdemo1.activity import android.os.Bundle import android.util.Log import android.view.MenuItem import android.widget.Button
阅读全文
摘要:一,代码 1,application public class MainApplication extends Application { private static MainApplication mApp; private static Context context; public Hash
阅读全文
摘要:一,代码例子: package com.example.okdemo1.interceptor; import android.content.Context; import android.content.Intent; import android.os.Handler; import andr
阅读全文
摘要:一,报错信息 Calling startActivity() from outside of an Activity context requires the FLAG_ACTIVITY_NEW_TASK flag 原因: activity继承了context重载了startActivity方法,如
阅读全文
摘要:一,报错信息: java.lang.RuntimeException: Can't toast on a thread that has not called Looper.prepare() 原因: 原因是Android中不允许在子线程中处理UI。如果要在子线程中处理UI那就要动态转到主线程中执行
阅读全文
摘要:一,安装第三方库 库地址: https://mvnrepository.com/artifact/com.squareup.okhttp3/logging-interceptor 编辑 build.gradle,增加 // https://mvnrepository.com/artifact/com
阅读全文
摘要:一,代码: 接口返回的json格式 接口类 package com.example.okdemo1.interfaces; import com.example.okdemo1.model.BaseEntity; import com.example.okdemo1.model.UserListEn
阅读全文
摘要:一,安装第三方库 库地址: https://mvnrepository.com/artifact/com.squareup.retrofit2/retrofit 编辑build.gradle,添加 // https://mvnrepository.com/artifact/com.squareup.
阅读全文
摘要:一,代码: 1,build.gradle的配置 buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-ru
阅读全文
摘要:一,安装第三方库: 第三方库地址: https://mvnrepository.com/artifact/me.jessyan/autosize 编辑build.gradle,添加: // https://mvnrepository.com/artifact/me.jessyan/autosize
阅读全文
摘要:一,?和!!的区别 ?.和!!主要区别在于它们对空指针的处理方式 ?.(安全调用操作符):当变量可能为null时,使用?.可以安全地调用其方法或属性。 如果变量为null,则不执行调用,直接返回null !!(非空断言操作符):当变量可能为null时,使用!!会强制执行调用, 如果变量为null
阅读全文
摘要:一,安装第三方库 库地址: https://mvnrepository.com/artifact/com.github.li-xiaojun/XPopup 编辑build.gradle,添加: // https://mvnrepository.com/artifact/com.github.li-x
阅读全文
摘要:一,gradle中的三种依赖 看例子: dependencies { //①.依赖当前项目下的某个模块[子工程] implementation project(':subject01') //②.依赖本地的某个jar文件 implementation files('libs/foo.jar', 'l
阅读全文
摘要:一,implementation 配置 定义:implementation 是一种依赖配置,适用于那些仅在当前模块内部使用的依赖。传递性:当一个模块使用 implementation 声明依赖时,这个依赖不会被暴露给该模块的消费者(即依赖此模块的其他模块)。这意味着,如果模块 A 使用 implem
阅读全文
摘要:一,安装第三方库 https://mvnrepository.com/artifact/com.google.android.flexbox/flexbox 编辑build.gralde,添加: // https://mvnrepository.com/artifact/com.google.and
阅读全文
摘要:一,代码: 如果同时在属性中同时设置了: android:layout_margin="10dp" android:layout_marginTop="30dp" 则只有layout_margin生效,layout_marginTop无效,并不会覆盖layout_margin的值.如果layout_
阅读全文
摘要:一,代码: 样式文件位置: 内容:注意:name用来供调用 <?xml version="1.0" encoding="utf-8"?> <resources xmlns:android="http://schemas.android.com/apk/res/android"> <style nam
阅读全文
摘要:一,安装第三方库 库地址: https://mvnrepository.com/artifact/com.github.barteksc/android-pdf-viewer 编辑build.gradle,添加: // https://mvnrepository.com/artifact/com.g
阅读全文
摘要:一,代码: xml:只有一个按钮 java: package com.example.okdemo1.activity; import android.content.Intent; import android.os.Bundle; import android.os.Environment; i
阅读全文
摘要:一,打开device explorer 二,找到文件后保存
阅读全文
摘要:一,安装第三方库 库地址 https://mvnrepository.com/artifact/com.github.nanchen2251/CompressHelper 编辑 build.gradle,添加 // https://mvnrepository.com/artifact/com.git
阅读全文
摘要:一,代码: xml上只有一个按钮 java代码: package com.example.okdemo1.activity; import android.Manifest; import android.content.Context; import android.content.Intent;
阅读全文
摘要:一,代码: 添加在AndroidManifest.xml中的FileProvider <provider android:name="androidx.core.content.FileProvider" android:authorities="com.example.okdemo1.filepr
阅读全文
摘要:一,报错信息 Failed to resolve: com.github.tbruyelle:rxpermissions:0.12 Show in Project Structure dialog Affected Modules: app 二,原因 需要把它所属的仓库添加到我们的gradle中但点
阅读全文
摘要:一,代码 xml只有一个按钮 java: package com.example.okdemo1.activity; import android.Manifest; import android.content.Intent; import android.content.pm.PackageMa
阅读全文
摘要:一,配置 在AndroidManifest.xml中添加FileProvider,如下: <provider android:name="androidx.core.content.FileProvider" android:authorities="com.example.okdemo1.file
阅读全文
摘要:一,报错信息: 编译时报错: Failed to resolve: com.zhihu.android:matisse:0.5.3-beta3 二,解决: 在settings.gradle中添加: maven { url 'https://jitpack.io' } maven { url 'htt
阅读全文
摘要:一,安装第三方库 库地址: https://mvnrepository.com/artifact/com.zhihu.android/matisse 编辑 build.gradle,添加: // https://mvnrepository.com/artifact/com.zhihu.android
阅读全文
摘要:一,安装第三方库 库地址: https://mvnrepository.com/artifact/androidx.media3/media3-exoplayer 在build.gradle中添加: implementation "androidx.media3:media3-exoplayer:1
阅读全文
摘要:一,区别 var var 关键字用于声明一个可变的变量,即这个变量的值可以在程序运行过程中被改变。 val val 关键字用于声明一个不可变的变量,即这个变量的值在初始化后不能被改变。 使用 val 声明的变量必须在声明时或者构造器中初始化,一旦初始化后,其值就不能被改变。 需要注意的地方:val声
阅读全文
摘要:一,java转kotlin code->Convert Java File to Kotlin File 如图: 弹出提示,需要在项目中配置kotlin 确认 提示一些需要修正 二,一个例子: package com.example.okdemo1.activity import android.o
阅读全文
摘要:一,安装第三方库 官方地址: https://mvnrepository.com/artifact/com.github.hackware1993/MagicIndicator 编辑 build.gradle,添加: // https://mvnrepository.com/artifact/com
阅读全文
摘要:一,报错信息 * What went wrong: Execution failed for task ':app:mergeDebugNativeLibs'. > Could not resolve all files for configuration ':app:debugRuntimeCla
阅读全文
摘要:一,代码 activity xml <?xml version="1.0" encoding="utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/
阅读全文
摘要:一,代码: activity xml <?xml version="1.0" encoding="utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com
阅读全文
摘要:一,报错信息: 错误: 对于add(int,MsgFragment), 找不到合适的方法 fragmentTransaction.add(R.id.fragment_container, fragment); ^ 方法 FragmentTransaction.add(Fragment,String)
阅读全文
摘要:一,创建common目录 然后在common目录下创建layout目录 二,原来在layout目录下的xml需要另放一个目录 我们创建一个main目录,main目录下创建layout,移动到这里 三,在build.gradle中添加已创建目录: //在layout文件夹下建立子文件夹 sourceS
阅读全文
摘要:一,代码: 公用部分 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertic
阅读全文
摘要:一,代码: activity xml <?xml version="1.0" encoding="utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com
阅读全文
摘要:一,代码: activity的xml <?xml version="1.0" encoding="utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com
阅读全文
摘要:一,代码: activity xml <?xml version="1.0" encoding="utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com
阅读全文
摘要:一,代码: 说明:在外层的最上面,增加了固定不移动的header xml: <?xml version="1.0" encoding="utf-8"?> <androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http:
阅读全文
摘要:一,NestedScrollView与ScrollView的区别: NestedScrollView 和 ScrollView 的主要区别在于它具备“嵌套滑动”(Nested Scrolling)功能。在 Android 中,嵌套滑动是一种滚动冲突处理机制,允许父视图和子视图协同工作,共同处理滑动事
阅读全文
摘要:一,代码: xml: activity <?xml version="1.0" encoding="utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.co
阅读全文
摘要:一,代码: <?xml version="1.0" encoding="utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/andr
阅读全文
摘要:一,fragment生命周期以及和activity生命周期的关系 和activity生命周期的关系 二,代码: viewpager2的两个fragment cate1 package com.example.okdemo1.fragment; import android.app.Activity;
阅读全文
浙公网安备 33010602011771号