在正式读下面的内容之前呢,我要事先说明一下:以下内容是我结合ai用Android Studio做记事本的思路过程,并不会直接提供代码给到大家,主要是我也不知道怎么给到大家嘿。我写这个主要是想记录一下我做这个的时候的思路,大家可以借鉴一下。做一个项目无论大小对业务逻辑要求还是比较高的,在你编程思路比较清晰以及对整个代码结构比较清晰的时候,用ai编程其实会方便很多。用ai呢就是有什么需求就说什么,哪里不懂问哪里,戒骄戒躁,一步一步做,肯定能做好的。也没必要全部照我这样来操作,我主要是提供一个思路供大家参考。下面开始介绍:
打开通义千问,手机号登录后即可使用
一:搭建好整体的模型框架,先按步骤一步步走好。
1.询问ai:我是androidstudio开发小白,请告诉我开发一款记事本程序需要进行哪些步骤。
后面ai会告诉你基本步骤:
我总结一下就是准备工作(配置环境)、创建新项目、设计UI、编写逻辑代码、数据存储、测试应用、添加额外功能、发布应用
2.在了解到基本步骤之后,配置环境和创建新项目基本无问题,而后问ai:
询问ai:我是一名android小白,现在我需要开发一款《记事本》程序,请你帮我设计一下UI界面:记事本主界面列表(列表+一个添加按钮)、添加记录界面、修改记录界面。要求美观
分析:
(1)ai会为你概述每个界面的设计要点,并提供一些实现建议
(2)无实战的建议,所以我们需要接着问:请你以代码的形式教我如何在Android Studio写出相应的代码。
(3)我发现ai是用Kotlin语言写的,而我对java语言比较熟悉所以我接着问:请你用java来写。接着ai就开始用java语言教我们编写一个简单的记事本程序:从创建项目、修改biuld.gradle文件、创建数据库和数据模型、DatabaseHelper.java、创建适配器、ui界面(主界面、添加记录界面、修改记录界面)及对应的java调用文件、数据库操作、布局资源文件。这些你直接用ai帮你做你看他怎么做的就好。
3.复制粘贴之后,有报错解决报错,先把整体的框架搭建好。
问题解析:在我的执行过程中,我是遇到了很多的报错信息:
(1)android:src="@drawable/ic_add" />
然后我问ai:android:src="@drawable/ic_add" />报错
分析:原因是因为没有找到该图标资源:ai会教我们如何去添加图标资源、修改xml布局文件、清理和重建项目、添加依赖性、同步项目、检查资源文件等一系列操作。
(2)item_note和R.id.text_view_title两个代码显示爆红
我问ai:为什么item_note和R.id.text_view_title会报错?
原因是因为没有被定义:然后ai会教我们创建item_note.xml文件,其中就包含了text_view_title和text_view_date这两个TextView。
4.因为我刚刚开始不太熟悉android studio怎么把做的项目在模拟机上启动,所以我就问ai:按照上面的步骤全部做了之后怎么把软件下载到模拟器adv的桌面上,跟着ai的步骤成功启动adv(模拟机)并正常显示之后我开始对界面进行修改。
例如:想让文本和加号图标变得大一些且自适应窗口:
问ai:主界面的xml文件复制给ai+请帮我将加号和文本、按钮设计得大一些自适应窗口
跟着他的步骤做即可。
- 在跟随ai完成一系列操作之后有部分代码有报红的情况如下代码:<com.google.android.material.floatingactionbutton.FloatingActionButton。
- 因为这是紧接着ai操作之后新加的代码,所以我们之间告诉他这个地方报错:<com.google.android.material.floatingactionbutton.FloatingActionButton报错。
分析:他会告诉我们出错的原因(缺少必要的依赖库或库),教我们如何去解决。
- 后续执行后发现的错误爆红信息:fab_add_note <com.google.android.material.floatingactionbutton.FloatingActionButton>: No speakable text present
我是直接把这段错误信息发给ai的:然后他告诉我解决方式,添加一个描述性信息即可。
二:实现具体的功能实现
1.问ai:为之前的项目添加接口功能实现,点击右下角添加图标进入添加界面,输入信息之后保存后点击返回即可返回到主界面。
分析:按ai给的步骤完成即可
2.我想在编辑信息的左上方添加一个返回的图像(后续我改成了按钮):然后我问ai:有关编辑的xml文件直接复制过来+请在上述的xml文件的界面中在左上角显示一个返回的图像
分析:按ai给的步骤完成
3.我不知道是否需要连接数据库,所以我问ai:把DatabaseHelper类文件复制粘贴过来+需要连接数据库吗?
告诉了我一些增删改查的可能介绍,可以把其中的东西用上。
4.因为EditNoteActivity中缺少一下接口实现,所以我问ai:把EditNoteActivity中的代码复制粘贴过来+请你补全接口处的代码。
让ai帮我实现接口
(1)粘贴过来之后我发现有关table和column的代码都报错了。
因为有前后联系的关系我就直接问ai了:有关table和column的代码都报错了
(2)解决之后又出现了这样的报错信息:'TABLE_NAME' has private access in 'com.example.noteapp.DatabaseHelper'
于是我问ai,我是直接发给他的,因为ai能根据报错的信息然后反馈:'TABLE_NAME' has private access in 'com.example.noteapp.DatabaseHelper'。
原因是TABLE_NAME等常量在DatabaseHelper类中被定义为私有(private)……
(3)在一段if语句中其中有两行代码报红,于是我把这些代码一起复制粘贴过来问ai:复制粘贴的内容+中间两行报错。修正原代码即可
5.因为在MainActivity中前面只给出了框架,以及某些方法,但方法体只给了注释告诉我们需要实现的功能。
于是我问ai:把MainActivity的全部代码复制粘贴过来+补充完注释部分的剩余代码
6.项目写完之后呢,app出现了闪退的情况,我直接问ai:项目写完之后,打开app会闪退
然后他告诉我,去打开logcat去查找报错的日志,从这开始我也就学会慢慢自己去根据日志去解决错误问题了。。
接着把爆红的日志信息全部复制粘贴给ai让他找出出错的问题和解决方案就行了。
7.接着我把MainActivity上的代码复制过来+请帮我创建适配器和点击监听器,然后ai帮我把之前的代码全部整合了一般。
8.因为我在虚拟机上点击右下角的添加按钮之后没反应于是问ai:把MainActivity上的代码复制过来+使得执行程序之后点击右下角的添加按钮进入到添加界面添加相应数据。
Ai帮我修改了点击处理逻辑,还帮我完善了添加界面和添加记录的业务处理逻辑。
9.执行完上述全部之后,我进行实操,结果点击添加按钮直接虚拟机直接无响应退出了,于是我问ai:点击添加按钮直接虚拟机直接无响应退出了,然后他一顿分析我感觉来不起,就去查日志信息,把日志信息发给了他。说:日志信息+帮我定位问题
分析:根据ai的说明,原因是因为没有在AndroidManifest.xml声明AddNoteActivity 这个活动类
10.解决之后,我们接着做添加记录的处理业务逻辑:
问ai:把AddNoteActivit复制粘贴+实现在添加界面输入数据之后按下save之后跳转到主界面用列表的形式展现出来。
跟着ai的步骤做完
做完后出现问题:虽然能起到返回到主界面的作用但是保存的数据无法在主界面以列表的形式呈现出来
因为前后关系,我就直接问ai了:虽然能起到返回到主界面的作用但是保存的数据无法在主界面以列表的形式呈现出来,按ai的提示操作完即可
11.在主方法中出现了这样的错误:
int id = cursor.getInt(cursor.getColumnIndex(DatabaseHelper.COLUMN_ID)); String title = cursor.getString(cursor.getColumnIndex(DatabaseHelper.COLUMN_TITLE)); String content = cursor.getString(cursor.getColumnIndex(DatabaseHelper.COLUMN_CONTENT)); long date = cursor.getLong(cursor.getColumnIndex(DatabaseHelper.COLUMN_DATE)); 这四句报错
原因是因为cursor的取值可能取到-1,在ID括号后面+1即可
12.NoteAdapter类中出现的问题:
报错信息:
Cannot resolve symbol 'SimpleDateFormat'
Cannot resolve symbol 'Date'
Cannot resolve symbol 'title_text_view'
Cannot resolve symbol 'content_text_view'
Cannot resolve symbol 'date_text_view'
问ai的方式:NoteAdapter的源码+报错信息
解决办法:导包(到NoteAdapter中)+查找、确保布局文件中包含正确的试图id
13.执行app验证,发现有无响应闪退的问题,于是查看日志找问题原因,把日志法给ai操作完就没问题了。
14.问ai:把MainActivity的源码复制粘贴+编写一个长按删除记录的事件和接口实现长按左键删除记录的操作,跟随ai的提示操作完毕
15.问ai:把MainActivity的源码复制粘贴+编写方法和接口实现:当点击左上方的返回按钮图片时,会直接返回到主界面
因为涉及到一个设计toolbar的问题,我不会,所以我问ai:请你从教我设置toobar开始教我。
跟着ai操作即可。
操作过程中在activity_main.xml 中遇到了 "Cannot resolve class RecyclerView" 错误,然后我把他的部分代码复制过来+报错的信息问ai
分析:因为你的项目缺少了必要的依赖库。RecyclerView 是 Android 支持库的一部分,你需要确保在 build.gradle 文件中添加了相应的依赖。…………
跟着操作即可
还遇到了:Namespace 'app' is not bound这样的报错。
问ai是因为:需要在 <RelativeLayout> 标签内添加 xmlns:app="http://schemas.android.com/apk/res-auto"。
16.fab_add_note <com.google.android.material.floatingactionbutton.FloatingActionButton>: No speakable text present
该问题又会重复出现,方法和前面(一)中的第8点类似,不会的话还可以接着问ai就好
17.Cannot resolve symbol '@color/colorPrimary' Cannot resolve symbol '@color/colorPrimaryDark'
颜色资源正确引用的问题,源代码+报错信息问ai,ai会教你如何配置
18.报错日志信息:As of Android 12, `android:exported` must be set; use `true` to make the activity available to other apps, and `false` otherwise. For launcher activities, this should be set to `true`.
类似于这种报错的日志信息可以直接为ai,ai可以告诉你详细的解析。
19.Cannot resolve symbol 'menu_main'
Cannot resolve symbol 'AlertDialog'
直接问ai把这两个报错的信息发给他即可,ai会教你配置xml文件、更新方法,导入类……
20.因为之前左上角的返回我设置的是一个图片,然后呢点击老是没反应出问题,我就直接让ai帮我做了一个。
问ai:AddNoteActivity的源代码+在添加界面的左上角添加一个返回的按钮在虚拟机中左键点击可以实现返回的操作。
按要求走下去
21.为编辑页面添加功能
问ai:EditNoteActivity的源代码+在这个代码的基础之上,实现当在主界面点击左键后进入编辑界面,并且在编辑完成并保存之后返回到主界面,编辑的内容需要发生改变
22.在MainActivity中为EditNoteActivity设置业务处理逻辑
问ai:MainActivity源码+请在该MainActivity的基础之上实现 在主界面(MainActivity)中设置点击事件来启动 EditNoteActivity。 传递笔记 ID 到 EditNoteActivity。 在 EditNoteActivity 中加载笔记数据并允许用户编辑。 在编辑完成后保存更改并返回到 MainActivity。 在 MainActivity 中重新加载笔记列表以显示更新的内容。
23.做到这个就可以测试啦,测试之后我是有一个日志报错了的,原因之前也遇到过,把报错的日志复制到ai中让他帮忙解决,声明相应的xml文件就好啦。
24.写到这里一个记事本文件的开发也就差不多结束啦。加油!!!