0

我在切换按钮中使用 sharedpreferences 时遇到问题。首先,我声明了我需要的东西:

public SharedPreferences preferences;
public WifiManager wifiManager;
ToggleButton wifitoggle;

然后是“动作”onClikc

// toggle wifi
    public void wifi (View view) {
        wifiManager = (WifiManager) this.getSystemService(Context.WIFI_SERVICE);
        boolean wifion = ((ToggleButton) view).isChecked();
        if (wifion) {
            wifiManager.setWifiEnabled(true);
            // Shared preferences
            SharedPreferences.Editor editor = preferences.edit();
            editor.putBoolean("togglewifi", true); // value to store
            editor.commit();

        }else{
            wifiManager.setWifiEnabled(false);
            // Shared preferences
            SharedPreferences.Editor editor = preferences.edit();
            editor.putBoolean("togglewifi", false); // value to store
            editor.commit();

        }
    }

在我的 onCreate 我报告了这个值:

boolean togglewifi = preferences.getBoolean("togglewifi", false);  //default è false
        if (togglewifi) 
        {

            wifitoggle.setChecked(true);
        }
            else
        {
            wifitoggle.setChecked(false);
        }

但是当我运行应用程序时它崩溃了。奇怪的是logCat什么也没说。没有错误..我错过了什么吗?感谢帮助

4

2 回答 2

1

尝试这个:

SharedPreferences sPref = getSharedPreferences(PREFS_NAME, 0);
Editor editor = sPref.edit();
editor.putBoolean("KEY", true/false);
editor.apply();
于 2013-11-11T11:47:00.803 回答
0

您需要初始化您的共享偏好。

SharedPreferences sharedPreferences=context.getSharedPreferences(sharedPreferenceName, Context.MODE_PRIVATE);
SharedPreferences.Editor editor=sharedPreferences.edit();

在这里,sharedPreferenceName 应该是一个名称,您将通过该名称访问存储的值。如果不匹配,您将无法访问 sharedpreference 中的值。

于 2013-11-11T12:06:13.390 回答