关于《第一行代码》中第十四章的学习总结+遇到的各种坑

一下问题均为个人所遇到的问题(Android Studio 3.5版本)

第一个坑:关于作者写的和风天气api接口已经更新到S6了,获取的信息都是不正确的问题:

首先呢先说一下当前时间哈:2019年12月15号!
访问和风天气入口
紧接着我们查看天气API文档在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述很多网上教程都是基于x3或者v5的,如今感觉很无奈,更新换代着实太快了。
而作者写的接口是,作者自己架的一台服务器在服务,所以给的信息不正确其实很正常。因为只是用于学习。那我们就要问了,如何让自己的app应用中的数据正常呢?下面我会详解:

第一步:学习一下关于和风天气的API文档(ps:需要一些耐心看完这篇文章,如果是大佬。那就再看看?)
首先当然是看Android SDK咯:
在这里插入图片描述
仔细阅读这个api就好下面来具体演示一下:
首先通过第一行代码所教的,新建一个项目
MainActivity.java文件中写:

package com.coolweather.android;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.content.SharedPreferences;
import android.nfc.Tag;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.util.Log;
import android.widget.TextView;

import com.google.gson.Gson;

import interfaces.heweather.com.interfacesmodule.bean.Base;
import interfaces.heweather.com.interfacesmodule.bean.Code;
import interfaces.heweather.com.interfacesmodule.bean.Lang;
import interfaces.heweather.com.interfacesmodule.bean.Unit;
import interfaces.heweather.com.interfacesmodule.bean.basic.Basic;
import interfaces.heweather.com.interfacesmodule.bean.weather.now.Now;
import interfaces.heweather.com.interfacesmodule.bean.weather.now.NowBase;
import interfaces.heweather.com.interfacesmodule.view.HeConfig;
import interfaces.heweather.com.interfacesmodule.view.HeWeather;

public class MainActivity extends AppCompatActivity {

    public String TAG = "MainActivity";
    TextView template;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        HeConfig.init("你当时注册是所用的名字", "你注册时所用到的密匙");
        HeConfig.switchToFreeServerNode();
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Fun("温宿");//你所在的城市!
    }

    //解析方法

    public void  Fun(String Id){
        HeWeather.getWeatherNow(MainActivity.this, Id, Lang.CHINESE_SIMPLIFIED , Unit.METRIC , new HeWeather.OnResultWeatherNowBeanListener() {
            @Override
            public void onError(Throwable e) {
                Log.i(TAG, "Weather Now onError: ", e);
            }

            @Override
            public void onSuccess(Now dataObject) {
                Log.i(TAG, " Weather Now onSuccess: " + new Gson().toJson(dataObject));
                //先判断返回的status是否正确,当status正确时获取数据,若status不正确,可查看status对应的Code值找到原因
                if ( Code.OK.getCode().equalsIgnoreCase(dataObject.getStatus()) ){
                    //此时返回数据
                    NowBase now = dataObject.getNow();
                    Basic base = dataObject.getBasic();
                    Log.i(TAG,"当前地区:"+base.getCnty()+"——"+base.getAdmin_area()+"——"+base.getParent_city()+"——"+base.getLocation());
                    Log.i(TAG, " 当前温度为:: " + now.getTmp());
                } else {
                    //在此查看返回数据失败的原因
                    String status = dataObject.getStatus();
                    Code code = Code.toEnum(status);
                    Log.i(TAG, "failed code: " + code);
                }
            }
        });
    }
}

这里应该难不倒你们吧!通过编译,运行点到Logcat哪一个窗口我们可以清楚看到
在这里插入图片描述
在这里插入图片描述
这样一来,我们就可以安心做控件,和美观的角度去思考问题,而不用在考虑如何获取接口信息啦!

第二个坑:关于布局文件中fragment的问题(AS3.5中已经把这个类包到androidx.fragment里面了,如果不是最新版的AS,或者有第三方包的可以无事啦)

这个问题还是要看自己如何解决,当时我错误的原因很奇怪,说什么找不到Main什么的,然后换了一个包,他就自己好了。肯定是AS抛弃了android的包,现在支持androidx

第三个坑:可能是自己的原因,其实JSON解析在和风天气给的第三方包里面已经囊括了。

上面的代码块已经写的很清楚啦
我并没有新建自己的实体类,但是在官方给的包中已经包括了很多实体类:
按住Ctrl鼠标移动到MainActivity.java文件中的NowBase,还有NowBase等等。这方便了很多!。
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 《Effective C++ 第三版》是一本关于C++高效编程的经典书籍,它涵盖了23个关键的C++编程技术,旨在帮助C++程序员成为更加高效和高质量的软件工程师。本书主要聚焦于面向对象编程和模板编程,以及C++语言的一些独特特性和语法,如函数重载、拷贝构造函数、移动语义、虚函数和多重继承等。本书帮助读者了解和掌握如何更好地使用C++,以提高代码的可读性、可维护性和可重用性。本书还覆盖了很多经常出现的编程问题,如内存管理、异常处理、并发编程等等,以及如何进行程序优化和测试。《Effective C++ 第三版》是一本全面而且深入的书籍,可以帮助C++ programmer成为真正的C++专家。无论是入门开发者还是有经验的程序员,都可以从获得很多价值。此外,《Effective C++ 第三版》也是一本非常好的参考书籍,可以为学习和使用C++提供坚实的理论基础和实用的示例代码。 ### 回答2: "Effective C++" 是著名的程序设计书籍,作者是著名计算机科学家Scott Meyers。该书现已经推出第三版,也有了相应的PDF电子书。 这本书主要介绍了C++语言的一些重要概念和技术,帮助读者更好地理解C++的基本特性和高级编程技巧。第三版对前两版的内容进行了全面更新和完善,加入了最新的C++11和C++14标准的变化和增强,包含了作者多年的实践和经验总结,增加了大量的实例和代码。 此外,"Effective C++"第三版还介绍了许多经典的C++编程问题和解决方案,例如对象生命周期管理、内存管理、资源共享、模板和STL应用等。这些问题在实际编程经常会遇到,掌握了这些技巧有助于提升代码的质量、可靠性和效率。 总之,"Effective C++"第三版是一本十分实用、经典的C++编程书籍,它不仅适合初学者,也对有经验的程序员有重要的参考价值。无论是想提高自己的编程水平、规避C++程序常见的错误,还是想进一步掌握现代C++编程技术的读者,都不可错过这本书。 ### 回答3: Effective C++ 第三版 pdf 是一本非常有价值的书籍,它是由 C++ 大师 Scott Meyers 所著,是 C++程序员必读的一本书籍。本书深入浅出地介绍了 C++语言的一些非常重要的知识点和技巧,帮助读者更好地理解和运用 C++语言,提高编程的质量和效率。 在 Effective C++ 第三版 pdf ,作者从多个方面对 C++语言进行了详细分析和解释,包括构造函数和析构函数的实现,运算符重载的使用,继承和虚函数的原理和应用,以及 STL等一系列的 C++语言特性和库函数的使用技巧。通过对这些重要知识点的深入讲解,读者可以很好地掌握 C++语言的内涵和精髓,提高自己的编程能力和技巧。 除此之外,Effective C++ 第三版 pdf 还提供了大量的实例和代码,能够直观地展示作者所说的知识点,并帮助读者更好地理解和掌握 C++语言的实际应用。读者可以通过反复练习和实践,逐渐掌握 C++语言的精髓和技巧,并能够应用到实际开发,提高自己的编程能力和水平。 总之,Effective C++ 第三版 pdf 是一本非常有价值的书籍,它涵盖了 C++语言的重要知识点和技巧,同时提供了大量的实例和代码,能够帮助读者全面掌握 C++语言,提高自己的编程能力和水平。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值