Java 设置SharedReferences以保存Switch语句大小写
我真的很困惑如何保存我的Switch语句,所以当游戏重新打开按钮显示为save时,我会对SharedReference进行如下编码Java 设置SharedReferences以保存Switch语句大小写,java,android,sharedpreferences,Java,Android,Sharedpreferences,我真的很困惑如何保存我的Switch语句,所以当游戏重新打开按钮显示为save时,我会对SharedReference进行如下编码 f1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v){ // TODO Auto-generated method stub
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);
}
在不同的行上有一个错误
SharedReferences.Editor=resultCode.edit()中的第一个代码>
我发现这个错误,无法对基元类型int调用edit()
其次,boolean resultcode=preferences.getBoolean(“IsFinished”,true)代码>
我犯了两个这样的错误
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);
}
无法解析首选项并复制局部变量
有人能帮我修复代码或提供另一个解决方案代码来保存Switch语句吗?错误号:1
您的代码中有一个输入错误。请注意resultCode.edit()中的C
替换
SharedPreferences resultcode = getSharedPreferences("preferences", MODE_PRIVATE);
SharedPreferences.Editor editor = resultCode.edit();
与
实际上,在您的代码中,它是resultcode
,这是SharedReference
,但是您在resultcode
上调用了edit()
错误:2
我认为您正在尝试获取存储在SharedReference中的布尔值。因此,你所做的是错误的
应按如下方式进行
boolean result = resultcode.getBoolean("IsFinished", true);
实际上,resultcode
是指Java类中的SharedReference
,而不是首选项<代码>首选项
只是为保存在本地设备中的xml文件指定的名称
有关SharedReference的更多详细信息,请查看。正如Lal所说,您有一个打字错误。就我个人而言,我更喜欢一行SharedReferences
,其中键String
作为类顶部的私有静态字符串
下面的代码源于
使用此代码,可以最大限度地减少打字错误。除了代码输入错误外,键中的输入错误将确保您的首选项永远不会正确保存/检索,这就是为什么我“提倡”使用静态字符串的原因。您还将从我的链接中注意到,我的所有首选项都由一个类管理,这意味着我不必在其他类中重复代码来检索/存储特定的首选项。一般来说,代码越少=出错的可能性越小 而且,它是SharedReferences
instance@Lal哦,好的,我明白了,“首选项”是在本地设备中保存数据的名称?或者“首选项”是正在使用的当前xml的名称?它是本地保存以保存数据的xml文件的名称@(太好了……)很高兴它帮助了兄弟……)那么,我是需要使用布尔结果,还是只需要上面代码中的4行SharedReference来保存数据?
private static final String KEY_ISFINISHED = "prefs_isfinished";
PreferenceManager.getDefaultSharedPreferences(context)
.edit().putBoolean(KEY_ISFINISHED, myboolean).commit();