【问题标题】:SharedPreferences issue in my toggle我的切换中的 SharedPreferences 问题
【发布时间】:2013-11-23 04:44:47
【问题描述】:

我在切换按钮中使用 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什么也没说。没有错误..我错过了什么吗?感谢您的帮助

【问题讨论】:

标签: java android sharedpreferences togglebutton


【解决方案1】:

试试这个:

SharedPreferences sPref = getSharedPreferences(PREFS_NAME, 0);
Editor editor = sPref.edit();
editor.putBoolean("KEY", true/false);
editor.apply();

【讨论】:

  • PREFS_NAME 和static final String PREFS_NAME = "MyPreferences"; 一样吗?
  • 无论如何:The method putBoolean(String, boolean) in the type SharedPreferences.Editor is not applicable for the arguments (String, String)
  • 是的,PREFS_NAME 就像 static final String PREFS_NAME = "MyPreferences";
  • 只有一件事,这你的代码有我把SharedPreferences.Editor editor = preferences.edit(); editor.putBoolean("togglewifi", true); // value to store editor.commit(); 放在上面吗?还是在 onCreate 中?
【解决方案2】:

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

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

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

【讨论】:

    猜你喜欢
    • 2013-08-01
    • 1970-01-01
    • 2021-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-21
    • 1970-01-01
    相关资源
    最近更新 更多