切换城市和手动更新天气

首先在布局文件中加入切换城市和更新天气的按钮,修改weather_layout.xml中的代码:

<Buttonandroid:id="@+id/switch_city"android:layout_width="30dp"android:layout_height="30dp"android:layout_centerVertical="true"android:layout_marginLeft="10dp"android:background="@drawable/home" />
<Buttonandroid:id="@+id/refresh_weather"android:layout_width="30dp"android:layout_height="30dp"android:layout_alignParentRight="true"android:layout_centerVertical="true"android:layout_marginRight="10dp"android:background="@drawable/refresh" />

修改WeatherActivity中的代码

在 onCreate()方法中获取到了两个按钮的实例,然后分别调用了 setOnClickListener()方法来注册点击事件。当点击的是更新天气按钮时,会首先从 SharedPreferences文件中读取天气代号,然后调用 queryWeatherInfo()方法去更新天气就可以了。当点击的是切换城市按钮

时,会跳转到 ChooseAreaActivity,但是注意目前我们已经选中过了一个城市,如果直接跳

转到 ChooseAreaActivity ,会 立 刻 又 跳 转 回 来 , 因 此 这 里 在 Intent 中 加 入 了 一 个from_weather_activity标志位。

switchCity = (Button)findViewById(R.id.switch_city);refreshWeather= (Button) findViewById(R.id.refresh_weather);
switchCity.setOnClickListener(this);refreshWeather.setOnClickListener(this);
public void onClick(View v) {switch(v.getId()) {caseR.id.switch_city:Intentintent = new Intent(this, ChooseAreaActivity.class);intent.putExtra("from_weather_activity",true);startActivity(intent);finish();break;caseR.id.refresh_weather:publishText.setText("同步中...");SharedPreferencesprefs = PreferenceManager.getDefaultSharedPreferences(this);StringweatherCode = prefs.getString("weather_code", "");if(!TextUtils.isEmpty(weatherCode)) {queryWeatherInfo(weatherCode);}break;default:break;}}

接着在 ChooseAreaActivity 对这个标志位进行处理,如下所示:

private boolean isFromWeatherActivity;
super.onCreate(savedInstanceState);isFromWeatherActivity= getIntent().getBooleanExtra("from_weather_activity", false);SharedPreferencesprefs = PreferenceManager.getDefaultSharedPreferences(this);if(prefs.getBoolean("city_selected", false) &&!isFromWeatherActivity) {Intentintent = new Intent(this, WeatherActivity.class);startActivity(intent);finish();return;}}

加入了一个 isFromWeatherActivity 变量,以此来标记是不是从WeatherActivity跳转过来的,只有已经选择了城市且不是从 WeatherActivity跳转过来的时候才会直接跳转到 WeatherActivity。另外,我们在 onBackPressed()方法中也进行了处理,当按下 Back键时,如果是从 WeatherActivity跳转过来的,则应该重新回到 WeatherActivity。

public void onBackPressed() {if(currentLevel == LEVEL_COUNTY) {queryCities();}else if (currentLevel == LEVEL_CITY) {queryProvinces();}else {if(isFromWeatherActivity) {Intentintent = new Intent(this, WeatherActivity.class);startActivity(intent);}finish();}

转载于:https://www.cnblogs.com/lemonhome/p/4492644.html

酷乐天气开发记录总结5相关推荐

  1. 酷乐天气开发记录总结1

    目前正在看郭霖大神的书<第一行代码>,很受启发,在此之下自己也尝试着做了一款天气软件--酷乐天气.本软件只限于学习和交流. 首先先确定酷乐天气的功能: 1.显示出全国所有的省.市.县: 2 ...

  2. 酷乐天气开发记录总结6

    后台自动更新天气 新建一个AutoUpdateServive继承自Service代码如下: @OverridepublicIBinder onBind(Intent intent) {returnnu ...

  3. 酷乐天气开发记录总结3

    与服务器的交互 新建HttpUtil类,代码如下: public class HttpUtil {publicstatic void sendHttpRequest(final String addr ...

  4. 酷乐天气开发记录总结2

    创建数据库和表 数据库设计: 建立三张表:Province.city.county 1.province Id:自增主键 Province_name:省级名称 Province_code:省级代码 2 ...

  5. 酷乐天气开发记录总结4

    遍历全国省市县数据 新建布局choose_area.xml文件 <LinearLayoutxmlns:android="http://schemas.android.com/apk/r ...

  6. 酷乐天气开发总结记录7

    酷乐天气的开发已经高一段落了,接下来就是修改图标,并对apk文件进行签名.在此不做说明了. 经过这一段时间的开发练习,我的收获如下: 1.会使用天气等类型的API 2.能够熟练得解析JSON数据,发送 ...

  7. Android酷欧天气实训报告书,萌新求助,第一行代码酷欧天气开发,遇到coolweather keeps s...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 现在贴上整个logcat中的错误以及程序截图: 错误如下:09-01 11:01:55.619 3833-3833/? E/AndroidRuntime: ...

  8. 【Electron】酷家乐客户端开发实践分享 — 下载管理器

    作者:钟离,酷家乐PC客户端负责人 原文地址:webfe.kujiale.com/electron-ku- 酷家乐客户端:下载地址 www.kujiale.com/activity/13- 文章背景: ...

  9. 14、进入实战——开发酷欧天气

    我们将要在本章编写一个功能较为完整的天气预报程序,学习了这么久的Android开发,我们给这个软件起个名字叫酷欧天气,英文名叫作Cool Weather.下面就可以开始动手了. 14.1 功能需求及技 ...

最新文章

  1. 6年面试经验总结!让设计师提升进公司的能力!
  2. 2019标杆案例复盘(中):万物互联——智能电子篇
  3. Ajax和JSON-学习笔记03【JSON_基础语法】
  4. 无埋点实现监测的真相——革新还是噱头?
  5. 远程桌面mstsc命令参数的使用
  6. 8个应用案例告诉你,机器学习都能做什么?
  7. h5文字垂直居中_CSS实现居中的几种方式你都了解吗?
  8. 使用Node.js的Express框架搭建和开发项目
  9. 项目管理工具Redmine各功能测试
  10. Spring pom配置详解(转)
  11. python基础装饰器_Python基础之装饰器
  12. Opencascade关键词
  13. AB PLC软件如何破解?
  14. React09——使用脚手架编程
  15. 多功能科学计算机在线使用,多功能科学计算器
  16. 在linux中访问权限是755,在Linux系统中,一个文件的访问权限是755,其含义是什么?...
  17. Timer定时器每天的固定时间执行
  18. zimbra 证书过期--zimbra使用
  19. 绿蓝色悖论(新归纳之谜)?
  20. Android插件化换肤

热门文章

  1. 音视频数据处理入门:原始视频格式YUV,NV12,NV21,YV12,YU12(I420)
  2. 把在线网课录制成视频的方法
  3. 电商类web原型制作分享——美丽说
  4. top-K 算法总结
  5. el-popconfirm中confirm的使用
  6. 购物中心促销软文如何写?商场节假日活动文案范例
  7. 男人到了二十几岁该怎么发展
  8. 从未在一起更让人遗憾_“从未在一起和最终没有在一起哪个更遗憾”
  9. 交通事故责任认定标准怎么确定
  10. QQ漂流瓶,有点意思