本文主要是介绍《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文件中申明需要的权限(静态权限),还需要在代码动态申请。
静态权限:
动态权限参考(在实现保存功能的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学习笔记》-吱-出坑必备的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!