在activity_main文件中选中复选框后,刷新MainActivity页面

时间:2017-05-21 10:06:20

标签: java android checkbox

我有一个Unitconverter.java文件,它将Kelvin转换为Celsius,将Kelvin转换为Fahrenheit:

package com.sg.blabla;

import android.content.SharedPreferences;
import java.util.Locale;

public class UnitConvertor {
    public static float convertTemperature(float temperature, SharedPreferences sp) {
        if (sp.getString("unit", "C").equals("°C")) {
            return UnitConvertor.kelvinToCelsius(temperature);
        } else if (sp.getString("unit", "C").equals("°F")) {
            return UnitConvertor.kelvinToFahrenheit(temperature);
        } else {
            return temperature;
        }
    }

    public static float kelvinToCelsius(float kelvinTemp) {
        return kelvinTemp - 273.15f;
    }

    public static float kelvinToFahrenheit(float kelvinTemp) {
        return (((9 * kelvinToCelsius(kelvinTemp)) / 5) + 32);
    }
}

我有一个MainActivity.java活动文件,当选中复选框时,它会根据用户输入转换tempature:

float temperature = UnitConverter.convertTemperature(Float.parseFloat(todayWeather.getTemperature()), sp);
if (sp.getBoolean("temperatureInteger", false)) {
    temperature = Math.round(temperature);
}

public boolean onOptionsItemSelected(MenuItem item) {
    int id = item.getItemId();

    if (id == R.id.action_refresh) {
        if (isNetworkAvailable()) {
            getTodayWeather();
            getLongTermWeather();
        }
        return true;
    }
}

我有一个activity_main.xml文件,其中包含以下代码:

<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
    <PreferenceCategory android:title="@string/settings_title_units">
        <ListPreference
            android:defaultValue="C"
            android:entries="@array/temperatureUnits"
            android:entryValues="@array/temperatureUnitsValues"
            android:key="unit"
            android:title="@string/setting_tempUnits" />

        <CheckBoxPreference
            android:defaultValue="false"
            android:key="temperatureInteger"
            android:title="@string/setting_showTempAsInteger" />
    </PreferenceCategory>
</PreferenceScreen>

我有一个arrays.xml文件,其中包含以下代码:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string-array name="temperatureUnits">
        <item name="C">@string/setting_unit_Celsuis</item>
        <item name="F">@string/setting_unit_Fahrenheit</item>
        <item name="K">@string/setting_unit_Kelvin</item>
    </string-array>
    <string-array name="temperatureUnitsValues">
        <item name="C">°C</item>
        <item name="F">°F</item>
        <item name="K">K</item>
    </string-array>
</resources>

我有一个menu.xml文件,其中包含以下代码:

<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    tools:context=".activities.MainActivity">
    <item
        android:id="@+id/action_refresh"
        android:icon="@drawable/ic_refresh_white_24dp"
        android:title="@string/action_refresh"
        app:showAsAction="always" />
</menu>

目前,在检查布局文件中的复选框后,我需要转到MainActivity页面然后如果单击Refresh,则MainActivity页面将反映我通过复选框检查的温度。

但我的问题是当在布局文件中选中复选框时,会自动刷新MainActivity页面。

0 个答案:

没有答案