我目前正在构建一个几乎可以发布的应用程序,但我遇到了一个问题,我被困了一段时间。我的应用程序包含一个按钮,单击后会将其颜色更改为红色或绿色,这表明哪种颜色可以动态更改。我现在不想用sharedPreferences保存我的按钮的状态。但我尝试的一切都失败了。我知道这听起来很粗鲁,但如果你能告诉我你会怎么做,那就太酷了
所以这是我的类,我的项目的数据存储在中
public class MyItem {
private String taskText;
public MyItem(String line1) {
taskText = line1;
}
public String getTaskText() {
return taskText;
}
}
这是我创建的OnClick方法,它改变了我的按钮的颜色。我正在尝试保存clicks
mButton = itemView.findViewById(R.id.button3);
mButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
clicks++;
if (clicks % 2 == 0)
mButton.setBackgroundResource(R.drawable.button_green);
else
mButton.setBackgroundResource(R.drawable.button_red);
}
});
不需要保存integer
,而是保存一些string
来设置颜色:
单击button
时,将color
保存为string
:
mButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
clicks++;
if (clicks % 2 == 0)
mButton.setBackgroundResource(R.drawable.button_green);
//save as green
SharedPreferences.Editor editor = getSharedPreferences("button",
MODE_PRIVATE).edit();
editor.putString("color", "green");
editor.apply();
else
mButton.setBackgroundResource(R.drawable.button_red);
//save as red
SharedPreferences.Editor editor = getSharedPreferences("button",
MODE_PRIVATE).edit();
editor.putString("color", "red");
editor.apply();
}
});
现在在onCreate()
中进行活动:
在这条线下:
mButton = findViewById(......);
添加此:
//get the color that was saved
SharedPreferences pref = getSharedPreferences("button", MODE_PRIVATE);
String color = pref.getString("color", "default");
if(color.equals("green")){
//color was green
mButton.setBackgroundResource(R.drawable.button_green);
}else{
//color was red
mButton.setBackgroundResource(R.drawable.button_red);
}