[英]Set SharedPreferences to save Switch Statement Case
我真的很困惑要保存我的Switch语句,所以当显示为VISIBLE的游戏重新打开按钮为“保存”时,我就用SharedPreferences进行一些编码
f1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v){
// TODO Auto-generated method stub
Intent level1 = new Intent ();
level1.setClassName ("com.example.game", "com.example.game.levelone");
startActivityForResult (level1, 0);
}
});
}
public void onActivityResult (int requestCode, int resultCode, Intent level1){
super.onActivityResult (requestCode, resultCode, level1);
f2=(Button)findViewById(R.id.f2);
f2lock=(ImageView)findViewById(R.id.f2lock);
SharedPreferences resultcode = getSharedPreferences("preferences", MODE_PRIVATE);
SharedPreferences.Editor editor = resultCode.edit();
editor.putBoolean("IsFinished", true);
editor.commit();
boolean resultcode = preferences.getBoolean("IsFinished", true);
switch (resultCode) {
case 2: f2.setVisibility(View.VISIBLE);
f2lock.setVisibility(View.GONE);
}
在不同的行上有一个错误
首先在SharedPreferences.Editor editor = resultCode.edit();
我收到此错误无法在原始类型int上调用edit()
其次, boolean resultcode = preferences.getBoolean("IsFinished", true);
我有两个这样的错误
首选项无法解析,并且局部变量重复
谁能帮助我修复代码或提供其他解决方案代码来保存Switch语句?
您的代码中有一个错字。 注意resultCode.edit()
的C
更换
SharedPreferences resultcode = getSharedPreferences("preferences", MODE_PRIVATE);
SharedPreferences.Editor editor = resultCode.edit();
同
SharedPreferences resultcode = getSharedPreferences("preferences", MODE_PRIVATE);
SharedPreferences.Editor editor = resultcode.edit();
实际上,在您的代码中,它是resultcode
,它是SharedPreference
,但是您在resultCode
上调用了edit()
我认为您正在尝试获取存储在SharedPreference中的布尔值。 为此,您在做什么是错误的。
应该做如下
boolean result = resultcode.getBoolean("IsFinished", true);
实际上,它是resultcode
,它引用Java类中的SharedPreference
而不是preferences
。 preferences
只是为保存在本地设备中的xml文件指定的名称。
请在文档中查看有关SharedPreferences的更多详细信息。
正如拉尔所说,您有错字。 就个人而言,我更喜欢单键SharedPreferences
,其键String
作为类顶部的private static String
。
下面的代码来自我的一个项目 。
private static final String KEY_ISFINISHED = "prefs_isfinished";
PreferenceManager.getDefaultSharedPreferences(context)
.edit().putBoolean(KEY_ISFINISHED, myboolean).commit();
使用此代码,您可以最大程度地减少错别字。 除了代码拼写错误外,键中的拼写错误还会确保您的首选项不会正确保存/检索,这就是为什么我“主张”使用static String
。 您还将从我的链接中注意到,我所有的首选项都由一个类管理,这意味着我不必在其他类中重复代码来检索/存储特定的首选项。 一般来说,更少的代码==更少的错误机会。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.