《Android学习笔记》-吱-出坑必备

2024-03-17 15:20

本文主要是介绍《Android学习笔记》-吱-出坑必备,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

前段时间接到了一个android开发的小项目,第一次用Android Studio写,感觉比Eclipse方便了很多。独立完成这个项目的日子里遇到了很多很多困难,感谢大佬们给予的经验分享,帮助我解决了一个又一个问题。现在把当时记录的一些笔记分享出来💪

【一】更新前后的apk安装到手机后不覆盖

更改package名称,即对Android目录下Java文件夹中的***/***/包名,进行重命名,然后Do Refactor。

然后在此基础上,再打开build.gradle(app),如下

更改其中的包名。

【二】Android 中多次设置 OnClickListener 只执行一次吗?

参考:https://www.wuhaojie.top/2017/01/06/OnClickListener/

【三】逐条创建表单table

创建表单table时只能逐条创建,for循环不可行,因为

A[i] = "create table if not exists pic1(score_1 varchar(20))";

中pic1无法用字符串数组表示

【四】页面上控件所占空间的权重问题layout_weight

参考:https://blog.csdn.net/hgy413/article/details/82811882

【五】intent上下个活动Activity传递数据

参考:https://blog.csdn.net/u012005313/article/details/47006923

【六】.setText(一定得是字符串,整型数据不可以)

【七】AndroidStudio工程去掉标题栏

项目-res-values-styles

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">

重点:NoActionBar

【八】游标Cursor是每行的集合

每行的集合的意思,是获得的满足条件(就是我们query方法中传入的条件参数)的所有行

如下:

SQLite数据库

我要在这个表中找gender为男的,那么获得到的cursor就包含了张三行,王五行。

Cursor是多行的数据,用

while(cursor.moveToNext())

即可逐行取出

Example:

private String[] arrayA = {"pic1", "pic2"};
private String[] tableTitle = {"quarter","_number", "name","score_1","goalthrow_1","goalthrowloss_1","frontcourt_1","assist_1","blockshot_1","steal_1","backcourt_1","two_1","three_1","freethrow_1","turnover_1","twoloss_1","threeloss_1", "freethrowloss_1","foul_1", "foultech_1", "foulpose_1", "foulrule_1"};for (int i = 0; i < tableNum; i++) {
Cursor cursor1 = db.query(arrayA[i], null,null,null, null, null, null);
if (cursor1.getCount() > 0) {while (cursor1.moveToNext()) {String[] LIST = new String[tableTitle.length];List<String> list = new ArrayList<>();for (int j = 0; j < tableTitle.length; j++) {LIST[j]=cursor1.getString(cursor1.getColumnIndex(tableTitle[j]));list.add(LIST[j]); }contentList.add(list);}cursor1.close();
}
}

【9】判断字符串是否相等时,要使用***.equals(**),而不能使用==

【10】保存数据库数据到本地存储的问题

步骤:

    1. 生成表格并显示(可滚动的表格),用于在软件页面查看

可用:https://blog.csdn.net/qq_36699930/article/details/81167134

参考:https://blog.csdn.net/u013233097/article/details/50357475(静态)

    2. 读取数据库数据,将数据保存到手机内存(首先要申请手机内存的读写权限,详见【10.0】

存储数据可参考这个博客的源码:

https://blog.csdn.net/qq_31939617/article/details/80895529

但是上面这个demo的安卓版本在6.0以下,所以还要在此基础上添加申请动态权限的代码,否则会无法保存

【10.0】申请手机内存的读写权限

关于权限问题,6.0以后,除了在AndroidManifest.xml文件中申明需要的权限(静态权限),还需要在代码动态申请。

静态权限:

https://img-blog.csdn.net/2018051115061964?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3lnejExMTExMQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70

动态权限参考(在实现保存功能的java程序里写):

https://blog.csdn.net/qq_34330286/article/details/79660059

【11】弹窗问题

调出弹窗的按钮,不应该用onclick,应该用函数声明的方法,

public void test(View view){ }

窗体上面的按钮,不能用:

public void onClick(View v)

 应该实体化用:

@Overridepublic void onClick(View v)

或者想调用弹窗按钮一样 ,用函数声明。

【12】关于RadioGroup无法换行的问题

所以其实原生的RadioGroup 存在的问题:

1. 如果不结合其他布局,例如LinearLayout, 则只能实现单行多个按钮组,或者单列多个按钮组。 

2. 如果结合其他布局, 虽然可以实现多行多列的RadioButton布局,但是,如果不通过一些互斥算法,也无法实现按钮组的单选操作

因此要重写RadioGroup

参考:https://blog.csdn.net/zhesir/article/details/50203083(主代码可用)

https://blog.csdn.net/shaoyezhangliwei/article/details/75278001(头文件可用,主代码有点问题)

【13】息屏再点亮后,页面数据不消失

参考1:Android 简单案例  onSaveInstanceState和onRestoreInstanceState

https://www.cnblogs.com/onelikeone/p/7586908.html

参考2:Android onSaveInstanceState()和onRestoreInstanceState()调用时机

https://blog.csdn.net/fenggering/article/details/53907654

参考3:Android中InstanceState()使用详解

https://blog.csdn.net/lsyz0021/article/details/51474121

这篇关于《Android学习笔记》-吱-出坑必备的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/819322

相关文章

Android kotlin中 Channel 和 Flow 的区别和选择使用场景分析

《Androidkotlin中Channel和Flow的区别和选择使用场景分析》Kotlin协程中,Flow是冷数据流,按需触发,适合响应式数据处理;Channel是热数据流,持续发送,支持... 目录一、基本概念界定FlowChannel二、核心特性对比数据生产触发条件生产与消费的关系背压处理机制生命周期

Android ClassLoader加载机制详解

《AndroidClassLoader加载机制详解》Android的ClassLoader负责加载.dex文件,基于双亲委派模型,支持热修复和插件化,需注意类冲突、内存泄漏和兼容性问题,本文给大家介... 目录一、ClassLoader概述1.1 类加载的基本概念1.2 android与Java Class

Android DataBinding 与 MVVM使用详解

《AndroidDataBinding与MVVM使用详解》本文介绍AndroidDataBinding库,其通过绑定UI组件与数据源实现自动更新,支持双向绑定和逻辑运算,减少模板代码,结合MV... 目录一、DataBinding 核心概念二、配置与基础使用1. 启用 DataBinding 2. 基础布局

Android ViewBinding使用流程

《AndroidViewBinding使用流程》AndroidViewBinding是Jetpack组件,替代findViewById,提供类型安全、空安全和编译时检查,代码简洁且性能优化,相比Da... 目录一、核心概念二、ViewBinding优点三、使用流程1. 启用 ViewBinding (模块级

Go学习记录之runtime包深入解析

《Go学习记录之runtime包深入解析》Go语言runtime包管理运行时环境,涵盖goroutine调度、内存分配、垃圾回收、类型信息等核心功能,:本文主要介绍Go学习记录之runtime包的... 目录前言:一、runtime包内容学习1、作用:① Goroutine和并发控制:② 垃圾回收:③ 栈和

Android学习总结之Java和kotlin区别超详细分析

《Android学习总结之Java和kotlin区别超详细分析》Java和Kotlin都是用于Android开发的编程语言,它们各自具有独特的特点和优势,:本文主要介绍Android学习总结之Ja... 目录一、空安全机制真题 1:Kotlin 如何解决 Java 的 NullPointerExceptio

重新对Java的类加载器的学习方式

《重新对Java的类加载器的学习方式》:本文主要介绍重新对Java的类加载器的学习方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、介绍1.1、简介1.2、符号引用和直接引用1、符号引用2、直接引用3、符号转直接的过程2、加载流程3、类加载的分类3.1、显示

Android NDK版本迭代与FFmpeg交叉编译完全指南

《AndroidNDK版本迭代与FFmpeg交叉编译完全指南》在Android开发中,使用NDK进行原生代码开发是一项常见需求,特别是当我们需要集成FFmpeg这样的多媒体处理库时,本文将深入分析A... 目录一、android NDK版本迭代分界线二、FFmpeg交叉编译关键注意事项三、完整编译脚本示例四

Android与iOS设备MAC地址生成原理及Java实现详解

《Android与iOS设备MAC地址生成原理及Java实现详解》在无线网络通信中,MAC(MediaAccessControl)地址是设备的唯一网络标识符,本文主要介绍了Android与iOS设备M... 目录引言1. MAC地址基础1.1 MAC地址的组成1.2 MAC地址的分类2. android与I

Android 实现一个隐私弹窗功能

《Android实现一个隐私弹窗功能》:本文主要介绍Android实现一个隐私弹窗功能,本文通过实例代码给大家介绍的非常详细,感兴趣的朋友一起看看吧... 效果图如下:1. 设置同意、退出、点击用户协议、点击隐私协议的函数参数2. 《用户协议》、《隐私政策》设置成可点击的,且颜色要区分出来res/l