我目前正在建立一个应用程序,这是几乎准备发布,但我得到了一个问题,我被卡住了安静的一段时间。我的应用程序包含一个按钮,一旦点击改变其颜色为红色或绿色,这表明可以动态变化。我现在想用sharedPreferences来保存我的Button的状态,但我尝试的一切都失败了。我知道这听起来很粗鲁,但如果你能告诉我你会怎么做,那将是非常酷的。
所以这就是我的类,我的项目的数据存储在
public class MyItem {
private String taskText;
public MyItem(String line1) {
taskText = line1;
}
public String getTaskText() {
return taskText;
}
}
这是我创建的OnClick方法,它可以改变我的Button的颜色。我试图保存 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);
}