使用共享首选项更改按钮的文本 android studio
CHANGING the text of a button with SHARED PREFERENCES android studio
我正在制作一个带有按钮的简单应用。当一只宠物小精灵被捕获时,我希望文本为“释放”,而当它没有被捕获时,则为“捕获!”。单击按钮时,我想将 caught 从 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();
}
}
如果有人能帮助我,我将不胜感激!
我迷路了所以我不知道我是否在正确的道路上,我的代码可能完全错误。
SharedPreferences 是 key-value
对的映射。因此,如果您尝试访问该值,您应该检查密钥是否存在,在您的情况下是 pokemon_name
.
if (captured.contains("pokemon_name")){
...
}
再次删除时,您应该提供密钥,而不是值。
...edit().remove("pokemon_name").commit();
阅读 SharedPreferences 官方文档以更好地理解。
我想这就是你想要的:
在您的应用中,您有一个 EditText
允许用户输入宠物小精灵名称。当用户点击切换捕捉按钮时,
如果小精灵名字被捕获(小精灵名字已经保存在SharePreferences
中),那么从SharePreferences
中移除小精灵名字并设置文本按钮“释放”。
如果小精灵名字没有被捕获(小精灵名字还没有保存在SharePreferences
中),那么将小精灵名字添加到SharePreferences
中并设置按钮的文本为“捕捉!”。
解决方案
public void toggleCatch(View view) {
String name = nameTextView.getText().toString().trim();
SharedPreferences captured = getSharedPreferences("pokemon_name", Context.MODE_PRIVATE);
boolean caught = captured.contains(name);
if (caught) {
captured.edit().remove(name).apply();
catch_button.setText("Release");
} else {
captured.edit().putBoolean(name, true).apply();
catch_button.setText("Catch!");
}
}
我正在制作一个带有按钮的简单应用。当一只宠物小精灵被捕获时,我希望文本为“释放”,而当它没有被捕获时,则为“捕获!”。单击按钮时,我想将 caught 从 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();
}
}
如果有人能帮助我,我将不胜感激!
我迷路了所以我不知道我是否在正确的道路上,我的代码可能完全错误。
SharedPreferences 是 key-value
对的映射。因此,如果您尝试访问该值,您应该检查密钥是否存在,在您的情况下是 pokemon_name
.
if (captured.contains("pokemon_name")){
...
}
再次删除时,您应该提供密钥,而不是值。
...edit().remove("pokemon_name").commit();
阅读 SharedPreferences 官方文档以更好地理解。
我想这就是你想要的:
在您的应用中,您有一个 EditText
允许用户输入宠物小精灵名称。当用户点击切换捕捉按钮时,
如果小精灵名字被捕获(小精灵名字已经保存在
SharePreferences
中),那么从SharePreferences
中移除小精灵名字并设置文本按钮“释放”。如果小精灵名字没有被捕获(小精灵名字还没有保存在
SharePreferences
中),那么将小精灵名字添加到SharePreferences
中并设置按钮的文本为“捕捉!”。
解决方案
public void toggleCatch(View view) {
String name = nameTextView.getText().toString().trim();
SharedPreferences captured = getSharedPreferences("pokemon_name", Context.MODE_PRIVATE);
boolean caught = captured.contains(name);
if (caught) {
captured.edit().remove(name).apply();
catch_button.setText("Release");
} else {
captured.edit().putBoolean(name, true).apply();
catch_button.setText("Catch!");
}
}