从零开始用Andrid Studio开发一个简单的垃圾分类查询APP(3)

本文是关于使用Android Studio开发垃圾分类查询APP的系列教程,重点讲述如何连接API获取数据,解决程序闪退问题,创建欢迎界面和搜索结果页面布局。通过修复Okhttp3包的不兼容问题,实现了数据请求的成功,并介绍了ListView和RecyclerView的选择,展示了搜索结果页面的基础布局。
摘要由CSDN通过智能技术生成

系列目录

从零开始用Andrid Studio开发一个简单的垃圾分类查询APP(1)
从零开始用Andrid Studio开发一个简单的垃圾分类查询APP(2)
从零开始用Andrid Studio开发一个简单的垃圾分类查询APP(3)
从零开始用Andrid Studio开发一个简单的垃圾分类查询APP(4)-完结篇

正文

今天楼主继续带大家来改bug,啊,不对,来编程。

1.连接API(续)

又经过楼主半个小时的尝试,终于发现直接导致程序闪退的就是下列代码:

Okhttp_work.OkHttpGet(url_beauty, new Callback() {
   
            @Override
            public void onFailure(Call call, IOException e) {
   
            }

            @Override
            public void onResponse(Call call, Response response) throws IOException {
   
                String content=response.body().string();
                Message message=new Message();
                message.what=1;
                message.obj=content;
                handler_beauty.sendMessageDelayed(message,1000);
            }
        });

关于Okhttp3包的部分,所以楼主去查了一下Okhttp3包导致程序闪退的问题,发现可能是由于楼主百度随便搜的Okhttp3包不兼容导致的闪退,而AS有自带的导入Okhttp3包的库,根本不用自己搜,只需要像我们之前一样添加一个依赖就可以自动下载了。
所以楼主当即更换成了4.10版本的Okhttp3,再次运行之后发现,程序好了一点,但是闪退和字还是没有变。
看了一下后台,发现没有发出申请,那我们的网络数据是发到哪里去了啊歪。

在楼主尝试把url改成https后,居然发送成功了,我们后台发现调用次数增加了,但是程序依然闪退,当楼主改content为newslist后,程序居然正常运行了!!!
在这里插入图片描述
原来是因为字符串错误导致的程序直接闪退,但是为什么AS下面的报告写着运行success。。。
而且问题来了,我们这里也不想显示这个啊!!
终于,经过楼主一个人自己瞎琢磨,期间参考了几个大佬的帖子,解决了这个问题:
在这里插入图片描述
这是经过修改后能使用的handler:

Handler handler_beauty=new Handler(new Handler.Callback() {
   //首先通过handler发送信息
        @Override
        public boolean handleMessage(@NonNull Message msg) {
   
            switch (msg.what){
   
                case 0:
                    Toast.makeText(MainActivity.this,"网络错误",Toast.LENGTH_LONG).show();
                    break;
                case 1:
                    String json=(String)msg.obj;
                    try{
   
                        JSONObject js=new JSONObject(json);
                        JSONArray newslist=js.getJSONArray("newslist");
                        String content=newslist.getString(0);
                        JSONObject js2=new JSONObject(content);
                        String content2=js2.getString("content");
                        tv_beauty.setText(content2);
                        break;
                    }catch (JSONException e){
   
                        e.printStackTrace();
                    }
                default:
                    throw new IllegalStateException("Unexpected value: " + msg.what);
            }
            return false;
        }
    });

好了!现在我们学会了怎么连接API,并且学会了怎么使用JSON,关于JSON,大家可以看这个帖子:JAVA生成与解析带中括号的JSON数据,不过具体怎么操作还是要自己悟出来啊。

这里再附上我们的计时器:

private Handler handler_time=new Handler();
    private Runnable task=new Runnable() {
   
        @Override
        public void run
  • 6
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值