我在做一个有按钮的简单应用程序。当pokemon被捕获时,我希望文本是“release”,当它没有被捕获时,文本是“catch!”。单击按钮时,我想将捕获的内容从true更改为false,反之亦然。
目前,我已经做到了这一点(它没有像我预期的那样工作):
public void toggleCatch(View view) {
boolean caught;
String name = nameTextView.getText().toString();
SharedPreferences captured = getSharedPreferences("pokemon_name",Context.MODE_PRIVATE);
if (captured.contains (name) ){
catch_button.setText("Release");
caught=true;
}
else{
catch_button.setText("Catch!");
caught=false;
}
if (caught) {
getPreferences(Context.MODE_PRIVATE).edit().putString("pokemon_name", name).commit();
} else {
getPreferences(Context.MODE_PRIVATE).edit().remove(name).commit();
}
}
如果有人能帮我,我会非常感激的!
我迷路了,所以我不知道我是否在正确的道路上,我的代码可能是完全错误的。
2条答案
按热度按时间vwhgwdsa1#
SharedReferences是
key-value
对。因此,如果您试图访问该值,您应该检查该键是否存在,在您的示例中是pokemon_name
.再次删除时,应该给出键,而不是值。
阅读共享参考官方文档以更好地理解。
qacovj5a2#
我想这就是你想要的:
在你的应用程序中,你有一个
EditText
允许用户输入pokemon名称。当用户单击“切换捕捉”按钮时,如果pokemon名称被捕获(pokemon名称已保存在
SharePreferences
),然后从SharePreferences
并将按钮的文本设置为“release”。如果pokemon名称未被捕获(pokemon名称尚未保存在
SharePreferences
),然后将pokemon名称添加到SharePreferences
并将按钮的文本设置为“catch!”。解决方案