• 酷乐天气开发记录总结5


    切换城市和手动更新天气

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

    <Button
               android:id="@+id/switch_city"
               android:layout_width="30dp"
               android:layout_height="30dp"
               android:layout_centerVertical="true"
               android:layout_marginLeft="10dp"
               android:background="@drawable/home" />
    <Button
               android: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();
                       }

  • 相关阅读:
    ORACLE日期时间函数大全
    Oracle 11.2.0.4 Data Guard 部署练习【一主一备/单机】
    Oracle 11.2 RAC 添加节点
    Oracle 11.2 RAC 删除节点
    Oracle 11.2 RAC on Redhat 6.5 安装最佳实践
    MongoDB复制集概念架构浅析
    Linux下MongoDB单实例的安装和配置详解
    抓包
    openstack安全组
    chrome headless 截图
  • 原文地址:https://www.cnblogs.com/lemonhome/p/4492644.html
Copyright © 2020-2023  润新知