简单的天气预报 (六)

本篇主要介绍的内容有两个

一、切换城市

二、刷新天气


先来介绍刷新天气

在上一篇中,我们在显示天气的activity里初始化了一些控件,里面包括2个按钮,其中之一就是刷新天气。然后我们去设置它的点击事件。

refreshWeather.setOnClickListener(this);
	@Override
	public void onClick(View view) {
		switch (view.getId()) {
		case R.id.switch_city:
		        ...
			break;
		case R.id.refresh_weather:
			publishText.setText("同步ing...");
			SharedPreferences sp = PreferenceManager
					.getDefaultSharedPreferences(this);
			String weatherCode = sp.getString("weather_code", "");
			if (!TextUtils.isEmpty(weatherCode)) {
				queryWeatherInfo(weatherCode);
			}
			break;

		default:
			break;
		}

	}
主要就是通过SharedPreferences获取天气代码,然后去查询天气,逻辑很简单。


接下来,我们来介绍一下如何切换城市。

同样的,初始化控件,然后设置其点击事件。

	@Override
	public void onClick(View view) {
		switch (view.getId()) {
		case R.id.switch_city:
			Intent intent = new Intent(this, ChooseAreaActivity.class);
			intent.putExtra("from_weather_activity", true);
			startActivity(intent);
			finish();
			break;
		case R.id.refresh_weather:
			...
			break;

		default:
			break;
		}

	}

主要是通过意图跳转,并且设置了一个标志位:from_weather_activity。

然后就去是ChooseAreaActivity里去通过意图来获取标志位,然后再进行一系列的操作。

isFromWeatherActivity = getIntent().getBooleanExtra("from_weather_activity", false);
if (sp.getBoolean("city_selected", false) && !isFromWeatherActivity) {
			Intent intent = new Intent(this, WeatherActivity.class);
			startActivity(intent);
			finish();
			return;
		}

如果已经选择过了城市,并且还不是从WeatherActivity界面跳转过来的,那么就去直接显示天气。

否则,顺序执行以后的代码,也就是去本地数据库中查询所有的省市县,这样也就完成了重新选择城市的问题。


来看看运行结果。

简单的天气预报 (六)_第1张图片


自此,全部程序就完成啦。

程序已经托付github : https://github.com/guya1990/MyCoolWeather.git

注:本程序来自于郭神的《第一行代码》,文章之所以标志为原创是主要是以下原因:

1、经过了郭神的许可

2、所有代码和图都是我经过理解且重新敲进去的。

最后感谢郭神,我觉得郭神的《第一行代码》用来知识点扫盲挺好的,里面有很多小技巧,详细的程序内容大家可以去买一本看看,这里只是我自己重新实现了一下。

你可能感兴趣的:(android练手)