精华内容
下载资源
问答
  • 安卓期末大作业-微论坛-模拟微博-无服务器-简单的安卓学习项目,适合初学者学习;安卓期末大作业-微论坛-模拟微博-无服务器-简单的安卓学习项目,适合初学者学习
  • 安卓期末大作业--百度地图总结

    千次阅读 2020-06-20 19:13:15
    安卓期末大作业总结 以下为我在安卓结课作业中遇到的问题,每个问题都困扰了我很久,写此博客记录。 androidx和依赖库的冲突 下图为我在进行大作业时所选用的SDK版本与Build Tools版本和AndroidStudio(后简称为AS)...

    安卓期末大作业总结

    以下为我在安卓结课作业中遇到的问题,每个问题都困扰了我很久,写此博客记录。

    androidx和依赖库的冲突

    下图为我在进行大作业时所选用的SDK版本与Build Tools版本和AndroidStudio(后简称为AS)版本
    在这里插入图片描述
    在这里插入图片描述
    可能在之前的作业中,AS的版本对我们的课件程序影响并不多,影响更多的是SDK版本的不同。但在这次大作业中,我们需要引入【android-support-v4.jar】和【BaiduLBS_Android.jar】两个jar包作为依赖库。当你的AS版本在3.5版本之上,你的默认集成库会变成androidX,而这恰恰会和上面的support依赖库起冲突。起冲突后,就算是按照老师的步骤一步步来的,最后的运行结果会是这样的。
    在这里插入图片描述
    在这里先用代码说下为什么一步步照着来也会错,原因如图。
    在这里插入图片描述
    上图是我将support的jar包设定为依赖库后自动生成的代码,再对照老师的视频,视频中生成的代码如下图。
    在这里插入图片描述
    可以看到两段代码是不一样的,这也就导致了为什么一步步来也会被报错。那么接下来就是解决问题,说实话一开始看到一长片红而且每行开头都一样我觉得没什么,肯定是解决一个问题全部红都消失,于是我兴冲冲地开始面向csdn程序设计,得到了解决方案。

    1. 把support依赖库转换为androidx
    2. 把androidx依赖库转换为support

    两种办法第一种是一次性全部把support转为androidx,第二种是一个个找冲突的地方,把andoridx变为support,而这一个个就是上面报错的一行行,意思就是要改那么多个,于是果断选择方案1,但是我方案1解决出来的结果是这样的。
    在这里插入图片描述
    当然现在做完这份作业再码这份博客的时候想想,可能是我的操作有误才导致这个结果,不过当时看到这个结果的时候我心态是崩的,已经不打算借助工程文件来做这份作业了,于是开始查阅资料和视频,准备自己重新码一份可以绕开依赖库的作业。

    AVD连网问题

    在期末大作业之前的工程文件都是不需要联网就能运行的,所以一直对AVD的联网没有概念,但当我码完初步的代码运行时,我得到的结果是这样的。
    在这里插入图片描述
    这里可以看到右上角的时间,当时写到快天亮以为可以睡了结果显示不出地图,于是又挣扎了好久导致睡的太晚第二天早上数学课错过签到:(

    那么经过一番查阅,我很快地发现了问题,是AVD没有联网的问题,找到了问题的所在,就开始想办法去解决它,让我没想到的是,这一解决就解决了整整一天。

    解决方案

    1. 参考链接:https://blog.csdn.net/louislrt/article/details/81514579

    这个链接中的方法是在cmd中使用adb shell命令,再使用getprop命令,再写setprop net.dns1 xxx.xxx.x.x 来更改AVD的DNS,但照着他的方法操作后,我得到的结果是这样的。
    在这里插入图片描述
    网上很多对于AVD无法连网的回答都类似如此,同样有反馈成功的,也有大片反应失败的,知道自己不是个例后,就明白只是这个方法不适合我,那我们就另寻出路。

    1. AS自带的AVD无法连网,那我们就换第三方的模拟器试试。这里我选择了Genymobile,令我很崩溃的是,它的服务器在国外,进入软件,选择模拟器准备下载,结果下载的巨慢。440M整整下载了6个小时多,说实话,下载完,我觉得我就快成功了,但还是我想多了。
      在这里插入图片描述
      调出第三方的模拟器之后,照着网上Genymobile模拟器100%成功连网的方法做了之后,仍然连不上网。这时候说实话就有点心态崩了,有点不知道怎么办了。

    2. 说实话可能正常情况下用前两种方法已经解决问题了,我仔细思考了一下是哪里出了问题,最后觉得可能是操作系统的问题,我这里使用的os x,因为我的主观印象觉得avd连网应该和系统没关系,所以在调用搜索引擎时一直没加入macos的关键字,于是尝试加入macos关键字进行搜索。找到了一个修改当前WiFi的DNS的方法。
      在这里插入图片描述
      于是我将当前使用的WIFI的DNS改为8.8.8.8,如上图。
      然后再打开我的AS运行程序,终于出现了我想要的结果。
      在这里插入图片描述

    视图布局问题

    如果整体采用的都是LinearLayout布局,也就是如下的代码。

    <?xml version="1.0" encoding="utf-8"?>
    <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        tools:context=".MainActivity">
        
        <ImageButton
            android:id="@+id/in"
            android:layout_width="60dp"
            android:layout_height="60dp"
            />
    
        <ImageButton
            android:id="@+id/out"
            android:layout_width="70dp"
            android:layout_height="70dp"
            />
            
        <com.baidu.mapapi.map.MapView
            android:id="@+id/bmapview"
            android:layout_height="match_parent"
            android:layout_width="match_parent"
            android:clickable="true">
    
        </com.baidu.mapapi.map.MapView>
        
    </FrameLayout>
    

    这么做最后得到的效果图是这样的(此处的图片没有显示地图内容是因为还没有定义DNS)
    在这里插入图片描述
    我们可以在图中看到,两个按钮覆盖住了我们的地图,所以我们应该调整各个控件的布局来达到我们想要的效果。这里我采用的是在帧布局中嵌套线性布局。代码如下:

    <?xml version="1.0" encoding="utf-8"?>
    <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        tools:context=".MainActivity">
    
        <com.baidu.mapapi.map.MapView
            android:id="@+id/bmapview"
            android:layout_height="match_parent"
            android:layout_width="match_parent"
            android:clickable="true">
    
        </com.baidu.mapapi.map.MapView>
    
        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:orientation="vertical">
    
        <ImageButton
            android:id="@+id/in"
            android:layout_width="60dp"
            android:layout_height="60dp"
            />
    
        <ImageButton
            android:id="@+id/out"
            android:layout_width="70dp"
            android:layout_height="70dp"
            />
        </LinearLayout>
    </FrameLayout>
    

    最后实现的效果是这样的:
    在这里插入图片描述
    可以看到,左上角已经得到了我们自定义的缩放控件。

    展开全文
  • 安卓开发期末大作业单词本,可正常运行。含有作业报告、任务书和代码
  • 本人安卓大作业,用Android studio软件开发的,一款简单的记单词App,手动添加单词记忆,只是比较简单,内含apk,项目源码,项目报告书,任务书,适合初学者使用,
  • 安卓开发期末大作业----单词本(源码,任务书,大报告,apk文件) 可以直接作为安卓开发、移动开发的大作业提交 用android studio开发,测试完无bug,可正常运行
  • 同时通过这次大作业,我加深了对Android Stdio的了解。在做这个APP过程中遇到了许多困难,在老师和朋友的帮助下,问题得以解决。通过查阅资料,阅读参考文献,终于得以完成。但是仍有一些不足之处,在之后的学习中...

    一、需求分析

    1.系统背景

    由于消费水平的提高,人们对于日常的消费情况很难有一个比较清晰调理的分析,因此本“记账宝”APP作为一款日常生活中对生活开销进行统计的工具。它可以将生活中每天收入或支出的费用进行统计。在收入或支出类别中,细化多个分类,用户在添加账目的时候,可以根据费用的类别进行选择,这样大大提高了生活中开支的细化,让账目一目了然、清晰。每添加不同开支类型的账目,应用都会对开支做个收入或支出备注总结,能够统计出开支流水的走向。有了“记账宝”,生活中的柴、米、油、盐等各种花销,一切都掌握在自己手中。

    2. 技术路线

    (1)开发环境

    Android Studio 是基于 IntelliJ IDEA 的官方Android 应用开发集成开发环境 (IDE)。除了 IntelliJ 强大的代码编辑器和开发者工具,Android Studio 提供了更多可提高 Android 应用构建效率的功能。

    (2)数据存储

    SQLite数据库,是一款轻型的数据库,遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中,它占用资源非常的低,SQLite是一个进程内的库,实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。

    二、App项目设计

    1.系统功能设计

    (1)功能图

    在这里插入图片描述

    (2)主要功能流程图

    用户登陆流程:
    在这里插入图片描述

    收入管理流程:
    在这里插入图片描述

    支出管理流程:
    在这里插入图片描述

    2.系统功能简介

    通过注册用户名和密码,将用户信息储存在数据库中,登录进主界面,主界面中会显示相对应的的收入部分和支出部分,在两部分各自的的增、删、改、查按钮中来实现对账务的管理。

    三、App项目实现

    1. App界面实现(界面截图)

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    2. App功能实现关键代码

    用户登录判断

    	btn_login.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            String username = et_username.getText().toString();
            String password = et_userpwd.getText().toString();
            if (username.equals("admin") && password.equals("123456")) {
                Toast.makeText(LoginActivity.this, "登陆成功", Toast.LENGTH_SHORT).show();
                Intent intent = new Intent(LoginActivity.this,MainActivity.class);
                startActivity(intent);
            } else {
                Toast.makeText(LoginActivity.this, "账户或密码错误!", Toast.LENGTH_SHORT).show();
            }
        }
    });
    

    新增收支

    	public void onClick(View v){
        //当单击“添加”按钮时,获取订单信息
        String id=et_incomeid.getText().toString().trim();
        String money = et_money.getText().toString().trim();
        String date = et_date.getText().toString().trim();
        String type = et_type.getText().toString().trim();
        String note = et_note.getText().toString();
        //添加订单
        Money o =new Money();
        o.id=id;
        o.money=money;
        o.date = date;
        o.type = type;
        o.note = note;
        //创建数据库访问对象
        MoneyDAO dao = new MoneyDAO(getApplicationContext());
        //打开数据库
        dao.open();
        //执行数据库访问方法
        long result = dao.addIncome(o);
        if (result > 0) {
            Toast.makeText(this, "添加成功", Toast.LENGTH_SHORT).show();
        } else {
            Toast.makeText(this, "添加失败", Toast.LENGTH_SHORT).show();
        }
        //关闭数据库
        dao.close();
        //关闭活动
        finish();
    }
    

    查找收支

    	private void initView() {
        //建立数据库访问对象
        MoneyDAO dao=new MoneyDAO(getApplicationContext());
        //打开数据库
        dao.open();
        //调用数据库访问方法
        List<Map<String,Object>> mOrderData=dao.getAllIncome();
        //获取组件
        listView=(ListView)findViewById(R.id.list_income);
        //定义数据源
        String[] from={"id","money","date","type","note"};
        //定义布局控件ID
        int[] to={R.id.tv_lst_orderid,R.id.tv_lst_username,R.id.tv_lst_name,R.id.tv_lst_price,R.id.tv_lst_amount};
        SimpleAdapter listItemAdapter=new SimpleAdapter(QueryActivity.this,mOrderData,R.layout.item_list,from,to);
        //添加并显示
        listView.setAdapter(listItemAdapter);
        //关闭数据库
        dao.close();
    }
    

    更新收支

    	private void updateOrder() {
        Money o=new Money();
        o.id=et_orderid.getText().toString().trim();
        o.money=et_upmoney.getText().toString().trim();
        o.date=et_update.getText().toString().trim();
        o.type=et_uptype.getText().toString().trim();
        o.note=et_upnote.getText().toString().trim();
        //创建数据库访问对象
        MoneyDAO dao=new MoneyDAO(getApplicationContext());
        //打开数据库
        dao.open();
        //执行数据库访问方法
        long result= dao.updateOrders(o);
        if(result>0) {
            Toast.makeText(this, "修改成功", Toast.LENGTH_SHORT).show();
        }else{
            Toast.makeText(this, "修改失败", Toast.LENGTH_SHORT).show();
        }
        //关闭数据库
        dao.close();
    }
    

    删除收支

    	private void deleteOrder() {
        Money o=new Money();
        o.date=et_deldate.getText().toString().trim();
        //创建数据库访问对象
        MoneyDAO dao=new MoneyDAO(getApplicationContext());
        //打开数据库
        dao.open();
        //执行数据库访问方法
        int result= dao.deletOrders(o);
        if(result>0) {
            Toast.makeText(this, "删除成功", Toast.LENGTH_SHORT).show();
        }else{
            Toast.makeText(this, "删除失败", Toast.LENGTH_SHORT).show();
        }
        //关闭数据库
        dao.close();
    }
    

    四、SQLite设计

    1. 数据库表设计(格式如下,一个数据表对应一个表格)

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    2.数据的录入、查询、修改、删除功能的具体实现的SQL语句

    数据录入

    public long addIncome(Money o) {
        // 创建ContentValues对象
        ContentValues values = new ContentValues();
        // 向该对象中插入键值对
        values.put("id", o.id);
        values.put("money", o.money);
        values.put("date", o.date);
        values.put("type", o.type);
        values.put("note", o.note);
        // 调用insert()方法将数据插入到数据库当中
        return db.insert("tb_income", null, values);
    }
    

    数据查询

    public ArrayList<Map<String, Object>> getAllIncome() {
        ArrayList<Map<String, Object>> listOrders = new ArrayList<Map<String, Object>>();
        Cursor cursor = db.query("tb_income", null, null, null, null, null,null);
    
        int resultCounts = cursor.getCount();  //记录数
        if (resultCounts == 0 ) {
            return null;
        } else {
            while (cursor.moveToNext()) {
                Map<String, Object> map = new HashMap<String, Object>();
                map.put("id", cursor.getString(cursor.getColumnIndex("id")));
                map.put("money", cursor.getString(cursor.getColumnIndex("money")));
                map.put("date", cursor.getString(cursor.getColumnIndex("date")));
                map.put("type", cursor.getString(cursor.getColumnIndex("type")));
                map.put("note", cursor.getString(cursor.getColumnIndex("note")));
                listOrders.add(map);
            }
            return listOrders;
        }
    }
    
    //根据日期查找收入
    public Money getOrders(String finddate) {
        //查询收入
        Cursor cursor = db.query("tb_income", null, "date=?", new String[]{orderid}, null, null, null);
        Money o = new Money();
        while (cursor.moveToNext()) {
            o.id = cursor.getString(cursor.getColumnIndex("id"));
            o.money= cursor.getString(cursor.getColumnIndex("money"));
            o.date = cursor.getString(cursor.getColumnIndex("date"));
            o.type = cursor.getString(cursor.getColumnIndex("type"));
            o.note = cursor.getString(cursor.getColumnIndex("note"));
        }
        return o;
    }
    

    数据修改

    public int updateOrders(Money o) {
        ContentValues value = new ContentValues();
        value.put("money", o.money);
        value.put("id", o.id);
        value.put("type", o.type);
        value.put("note", o.note);
        return db.update("tb_income", value, "date=?", new String[]{String.valueOf(o.date)});
    }
    

    数据删除

    public int deletOrders(Money o) {
        return db.delete("tb_income", "date=?", new String[]{String.valueOf(o.date)});
    };
    

    五、测试用例

    1.App操作时对应的界面截图及数据库数据截图(包括数据录入、查询、修改、删除)
    操作 使用数据 预期效果 实际效果(文字加截图)
    数据录入 编号:3
    金额:500元
    时间:05.13
    类型:奖金
    备注:无 数据录入到数据库中

    数据查询 编号:3
    金额:500元
    时间:05.13
    类型:奖金
    备注:无 在查询收支界面显示出所有数据

    数据修改 编号:3
    金额:500元
    时间:05.13
    类型:奖金2
    备注:无 在修改界面将类型“奖金”修改为“奖金2”

    数据删除 编号:3
    金额:500元
    时间:05.13
    类型:奖金2
    备注:无 在删除界面删除日期为“05.13”,编号为3的收支数据

    六、总结

    记账宝APP基本上达到了预期的目标,可以进行收支的录入,在界面中查询到收支情况,并能对其进行修改、删除操作。但仍有许多不足之处,比如判断收支类别时需要自己手动输入,没有运用下拉菜单的设计,存在数据冗余的情况,时间录入时同样需要手动输入,比较繁琐,我想在后面的设计中加以改进,分别运用时间选择控件和下拉菜单控件,进一步完善其功能。
    在整个项目完成的过程中,首先是界面设计和整体的框架一定要设计好,不然后面有需要改动的部分时可能存在对整个项目全部调整的情况,浪费时间和精力,造成没有不要的浪费。因为我的java基础比较薄弱,许多想要实现的功能都没有找到正确的方法,以至于最后的作品也没有到最完善的阶段。这使我认识到基本功的重要性,更是勉励自己要扎扎实实的把基本功打好。
    同时通过这次大作业,我加深了对Android Stdio的了解。在做这个APP过程中遇到了许多困难,在老师和朋友的帮助下,问题得以解决。通过查阅资料,阅读参考文献,终于得以完成。但是仍有一些不足之处,在之后的学习中,一定要主动学习,积极阅读文献,和老师、同学经常沟通,逐步完善自己的编程水平。

    参考文献:

    [1] 郭霖 第一行代码—Android (第2版) [M].人民邮电出版社 2016.11
    [2] 黄晓先。 基于Android的掌上校园交流系统设计与实现[J]. 开封教育学院学报,2016,03:280-281.
    [3] 徐强,周倩,成敏。 基于Android平台的物流信息采集系统[J]. 吉林大学学报(信息科学版),2016,02:196-203.
    [4] 张生财。 基于Android教务信息管理系统开发[J]. 科技创新与应用,2014,34:72.
    [5] 杨云君。 Android 的设计与实现[M]. 北京:机械工业出版社,2013:45-49.

    展开全文
  • 安卓记账本/理财小助手app,可导入Android studio运行,功能完备。
  • 由于这一次的大作业涉及到的代码部分过于长,所以博客里不放相关代码; 工程&apk&记账app原型&素材资源链接:https://download.csdn.net/download/white2333/11234105 配套文档目录预览&资源链接...

    说在前面:

    由于这一次的大作业涉及到的代码部分过于长,所以博客里不放相关代码;

    工程&apk&记账app原型&素材资源链接:https://download.csdn.net/download/white2333/11234105

    配套文档目录预览&资源链接:https://download.csdn.net/download/white2333/11234160

    本博客涉及到的内容(目录):

    1. 项目内容介绍
    2. app所需实现功能分析
    3. 难点重点归纳
    4. 可参考CSDN合集
    5. 项目部分截图
    6. 个人总结&遇到的问题&解决方案

    1.项目内容介绍:

    根据老师给的相关pdf以及html网站合集可以总结得到:设计实现基于Android平台的记账app。简单分析一下自己的需求,对于衣食住行进行分类,然后记录每天的时间,记录下消费的原因,最重要的就是金额了,以及收入进账的记录。做每个月账单统计图表,分析自己当前的支出和收入。

    2.app所需实现功能分析

    • 首次启动页:首次使用app,首次加载,点击开启记账,进入首页。
    • 首页:app主体界面,默认显示手机系统时间当月的账单以及当月的总支出、总收入。用户可通过按键< >查看其它月份账单和支出收入情况。
    • 记账页:app主要功能界面,主要功能有添加新账目,修改原有账目。
    • 分类页:分类设置界面,默认显示数据库原有分类条目。用户可长按分类条目显示编辑按钮条,编辑、删除(可多选)分类条目或隐藏编辑按钮条。同时在编辑按钮条隐藏的条件下,用户可以通过点击右下角的添加按钮添加分类条目。
    • 图表页:数据统计分类显示界面,默认显示手机系统时间当月账单的支出分类圆形图表,用户可通过点击收入按钮查看当月账单的收入分类圆形图表。同时用户可以通过< >按键查看其它月份的分类圆形图表。

    页面跳转关系图如下:

    3.重点难点归纳:

     

    数据库的操作代码编写

    本项目的重点,数据库中表的创建以及其他功能的实现非常容易出错,而且Android studio不会在因为数据库的操作错误而提示出具体的错误信息,app会直接终止运行,所以很难自己找出bug在哪。

     

    RecyclerView的显示和布局以及item样式设置

    这一点主要是针对以前从未接触过list以及从数据库读取显示的新手,第一次接触理解和操作起来都比较难,很容易在初始化列表以及读取item的时候出错。

     

    隐藏显示新界面及动画的使用

    由于动画的使用课堂涉及比较少,所以只能通过看博客以及自我理解来使用,很容易连动画xml文件如何创建都不知道。隐藏和显示界面需要自定义函数来实现,所以要判断的地方比较多,很容易出现判断不足或者显示和数据更改错误或未更改问题。

     

    复选框的相关操作

    复选框涉及到界面的显示以及按钮的显示,所以要在相关界面进行不断的判断,并且经常要读取被选项的相关数据,对于之前未接触过复选框相关操作的新手,容易忽略一些地方的判断,复选框的实现以及操作会显得比较复杂和繁琐

     

    图表的统计显示

    4.可参考的CSDN:

    Android 判断Intent是否存在:

    https://blog.csdn.net/top_code/article/details/17285695

     使用Intent传递对象:

    https://blog.csdn.net/qq_41005535/article/details/79390548

    https://blog.csdn.net/wei18791957243/article/details/82716737

    https://blog.csdn.net/llengnuo/article/details/78109334

    Android SQLite增删改查的语句:

    https://blog.csdn.net/qq_30716173/article/details/50148151

    Android ListView长按弹出CheckBox,实现全选,反选,批量删除功能:

    https://blog.csdn.net/u013006960/article/details/52102839

    Android 自定义CheckBox样式

    https://blog.csdn.net/dodod2012/article/details/78780296

    安卓编程之获取系统当前时间

    https://blog.csdn.net/hou09tian/article/details/78209167

    Android自定义View实战(圆饼图的实现)

    https://www.jianshu.com/p/dff5dd124b0d

    Java对Arraylist的常用操作

    https://blog.csdn.net/zy20120580223/article/details/80294717

    对ArrayList某一属性相同的数据进行合并算法

    https://blog.csdn.net/liu_yulong/article/details/84378098

     

    5.项目部分截图:

    6.个人总结:在两个星期的app制作以及一个星期的课程设计报告编写中;学会了怎样在Android studio中灵活使用数据库,并且第一次接触到了动画的使用还有list的使用。同时学会了怎样在比较混乱的页面跳转关系中整理出页面跳转图进而在带参数以及不带参数的两种页面跳转方式中进行选择。目前对页面跳转方法掌握的比较全面。对实验过程中掌握了新的比较实用的UI布局方法。同时掌握了很多课本上没有的相关功能的实现方法对自己编写的项目越来越熟悉,测试和debug也越来越上手。

    遇到的问题:

    问题1:注释掉清空全部数据库的测试代码后,进行页面跳转之后再返回读取数据库数据的recylerView界面时发现之前插入的数据均未显示,以及之前删除的数据也再次恢复(设置了初始数据的情况)才发现数据库读取出现了问题,不然就是根本没有写进数据库。

    解决方法:在编写Classify页面的项目添加时发现成功插入了数据库,并且经过多个页面跳转之后仍然可以正常读取,

    从而返回去检查home_page的数据库插入问题,经过对比发现在插入数据库时设定的主键id没有用代码插入,

    所以数据库插入出现了问题,经过修改数据库的创建代码之后(即创建数据库放弃id这个数据项,设置新主键)可以正确读取数据库。

     

    问题2&解决方法:在解决问题1的时候遇到了另一个问题,一开始的解决方法是设定一个新的int数据来给id赋值,在插入数据时进行id++操作。这样插入数据是没有问题的,后来发现在重新启动app的情况下id会重新从0开始自增。导致主键重复,数据插入失败。所以在了解系统在创建表的时候会自动加入一个rowid数据项之后选择了放弃id这个数据项。

     

    问题3:也是在解决问题1的时候遇到的问题,在确定放弃id这个数据项之后,我选择了直接在原来创建数据库的代码上删除了创建id数据项的语句。之后启动项目崩溃。检查之后发现由于原来已经创建了表和数据库,修改代码后再次创建了相同表名的表导致表重复无法重新创表。

    解决方法:修改了表名也在数据库中删除了原表。

     

    问题4:界面跳转问题,Finish()方法的缺陷;在Account界面利用startActivity()跳转到Classify界面并且选择完item返回Account界面时一开始选择的也是startActivity()跳转所以导致Account界面原本打算跳转到home_page的finish()方法跳转到了Classify界面

    解决方法:将Classify跳转回Account界面的方法修改成了finish()方法则这样不会修改Account界面的上一个界面是home_page界面

    问题5:初始化账目list收入支出金额text颜色显示问题,想要达到的效果是收入金额Text红色显示,支出金额Text黑色显示。但是实现的效果是,在插入金额时,list自动更新时是达到了想要的效果,但是重开app后,所有的金额都会变成布局文件中设定的初始颜色。再插入还是会有红黑之分。

    解决办法:在寻求了同学的帮助下,不断排查了代码发现了问题;在改变Text颜色的代码之前进行的判断字符串是”收入”还是”支出”用的是”==”判断,在修改成equal之后该bug被解决。引起这个的原因主要是在判断的时候读取的字符串不是从数据库读取的,而是直接从布局中读取的,尽管显示出来有支出收入之分,但是读取时读的都是布局初始化的内个字段,以本项目为例,布局文件始终以支出为初始显示Text所以重开app之后所有收入支出字段的颜色又会被统一成黑色。

     

    问题6:若第一次饼图设置pieValue数据分别为20,30,50;则控件默认以后都是数据之和为100时饼图才会全部显示,否则,若重新设置pieValue值为20,30;则会显示半圆。

    解决方法:将pieValue按百分比设置,使之和一直为1即可,如上可改写为0.2,0.3,0.5;第二次重新设置0.4,0.6即可,故我们写了一个计算百分比的函数,每次要从数据库读取数据显示在饼图上时,先把读取到的数据计算出各自的百分比,再显示到饼图上。

     

    问题7&解决方法:打开新项目后,R文件无法识别;将build.gradle中的classpath改为自己相应的版本

     

     

     

     

     

    展开全文
  • 安卓大作业记事本

    2019-06-24 16:11:37
    期末安卓大作业,自己做的一个熊猫记事本。有登录界面,对记事的增删改查,支持关键字模糊查询和日期查询,记事可以加锁也可以设置闹钟提醒,可以拍照记事,分享等等。每一行都有注释!!!每一行!!!不用担心看不...
  • ##安卓学习期末总结 一学期快结束了,但是现在的我好像遇到了难题.我平时看华老师的博客,多看几遍还是能懂,照着做大多数情况下还是能运行成功.但是让我讲讲这学期学了啥,我们这门课的用意是什么.大脑一片空白.脱离了...

    ##安卓学习期末总结
    一学期快结束了,但是现在的我好像遇到了难题.我平时看华老师的博客,多看几遍还是能懂,照着做大多数情况下还是能运行成功.但是让我讲讲这学期学了啥,我们这门课的用意是什么.大脑一片空白.脱离了华老师的博客,就不知道自己要干嘛,怎么做.想想都觉得可怕,这种似懂非懂的感觉即蒙骗了自己也耽误了时间.
    我反省了一段时间,想想自己是不够努力,对自己要求太低造成的.看老师的博客,对于概念的部分都只扫一眼就过,没有真正理解它的含义,没看懂的地方也没有去深入了解.上课也只图完成任务,课下没有主动去花大量时间学习.如果我自己在课余时间自己去尝试,不要一味去搬运老师的知识,多去想一想为什么.或许我会收获更多.不过世界上没有后悔药,我知道一味的后悔,自责没有用.得想办法去解决问题.
    我在思考自己以后到底想干嘛.我是一个随性的女孩,想法多,想做的事情也多.我既然选择了这个专业,一定是这个专业有什么吸引我的地方.不过就目前来看,我对它的喜欢表现得不明显.从刚接触软件技术这个专业到现在有大半年了.想想自己还是有很大改变.
    我是大一下学期才转专业从应用英语班转到了软件技术班.在这之前很少接触过电脑.因为疫情原因我们学校也上了很久的网课.所以实际我学习相关的专业知识到现在也只有大半年.然后到了新班级,当python老师发现我还不会建文件夹时很震惊.我的脸上也是写上了满满的尴尬.后来我的同学们耐心的教会了我选中文件,复制文件等实用小技巧.日子慢慢过去,温柔的老师,热心的同学们让我不再像刚来时那么害怕.我也能真正的像一个软件班的同学在学习了.我知道我技术上还与大部分同学有差距,但是我相信努力会让我们之间的差距越来越小.我有个习惯就是在闲下来的时候思考人生.思考了很长一段时间都无果.后来我才明白,未来就是因为不可知才让人好奇和憧憬.好奇心是一个人前进的动力,我们这个专业,带上好奇,它就变得充满乐趣……
    最后一句,祝我们前程似锦 ,不负青春!

    作业总结:有些功能没有实现,比如线形布局的水果拼盘其中的吐司功能。
    原因:虽然有案例,但是还是略有不同,没有真正理解吐司的知识点。
    未完成的作业有:菜单,自定义文本视图绘制图像,补间动画

    完成的不好的作业有:下拉列表,共享参数,数据库
    基本完成的作业有:测试开发环境,设计用户登录窗口,携带数据跳转,线形布局,帧式布局,相对布局,网格布局 ,安卓按钮事件

    展开全文
  • 本文的主要目的就是总结一学期安卓开发入门和最后期末大作业相关的一些收获和感受。 给自己一个总结和给以后再去学习的相关内容的小伙伴们一咪咪帮助吧。 这个app的技术核心是唐东明老师的移动终端设计(java)的一...
  • 大学安卓/移动开发课程期末大作业,包含完整项目源代码、安装包、展示PPT和项目说明文档~ 逻辑不复杂、页面美观、功能齐全很适合初学者使用。
  • 作为移动端程序设计 期末大作业, 一个电子词典类的程序
  • 安卓作业(情景模式)可用于期末大作业,毕业设计,毕业设计有点简单,大报告还是合适的。
  • 期末大作业 连上了后台 数据库 实现的功能有酒店展示 酒店预订 支付 订单显示 退订 续订 还有个人页面 banner轮播图
  • 课程设计,期末大作业,答辩ppt,有源代码,有app解释,安卓移动开发,学年设计;课程设计,期末大作业,答辩ppt,有源代码,有app解释,安卓移动开发,学年设计
  • AndroidStudio理财小助手

    2019-06-24 16:25:55
    安卓期末大作业,一个理财的小助手(记账本),基于Android studio开发,有登录注册界面,实现收入支出,对于记账的增删改查以及展示功能等,界面美观,代码注释详细,数据存入sqlite数据库。
  • 记录期末安卓大作业(私用) 坑坑洼洼的步骤: 使用fragment+radiobutton实现了底部导航栏 成功改掉两个BUG哈哈哈快乐 我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加...
  • 安卓好记性单词.zip

    2020-12-31 11:07:09
    使用Android studio 4.0.1版本,写的一个好记性单词记事本,里面有添加单词、删除单词、查询单词、切换视图、清楚数据等功能,是我们小组期末大作业,在导入之前,一定要百度,修改三个配置文件就可以了

空空如也

空空如也

1 2 3
收藏数 44
精华内容 17
关键字:

安卓期末大作业