我需要一些有关 SharedPerferences 的帮助,并在单击或未单击时保存 ImageButton (Dragon) 的状态。
当 ImageButton 未单击时,它应该是 R.drawable.normal (false),当用户单击 ImageButton 时,它应该是 R.drawable.clicked (true)。
当您离开应用程序并打开它时,应该保留 ImageButton drawable.clicked 图像。我一直在网上确定这是布尔值、字符串还是 setImageURI,但找不到答案。
有人可以就此 SharePerferences 的正确方法向我提供建议并进行更正或举例说明正确的逻辑吗?
我将不胜感激,并在下面查看我的代码。
public class Main extends Activity {
ImageButton Dragon;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
final Dragon = (ImageButton) findViewById(R.id.imageButton1);
loadPrefs();
Dragon.setOnClickListener (new OnClickListener() {
public void onClick(View v) {
savePrefs("IMGBOX", Dragon.isSelected());
if (Dragon.isSelected()){
Dragon.setSelected(false);
Dragon.setImageResource(R.drawable.clicked);
} else {
Dragon.setImageResource(R.drawable.normal);
Dragon.setSelected(true);
}
}
}
);
}
private void loadPrefs(){
SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(this);
boolean imgValue = sp.getBoolean("IMGBOX", false);
if (imgValue){
Dragon.setSelected(true);
}else{
Dragon.setSelected(false);
}
}
private void savePrefs(String key, boolean value){
SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(this);
Editor edit = sp.edit();
edit.putBoolean(key, value);
edit.commit();
}
}
更新:我能够使用 ToggleButton 作为布尔值来运行它,这是一个具有两种状态(false/true)的 state_checked 选择器。非常感谢马克西姆 Efimov 的帮助!
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/image_clicked"
android:state_checked="true" />
<item android:drawable="@drawable/image_notclicked"
android:state_checked="false"/>
</selector>