[英]save the state of button in android
我正在相机应用程序上工作,我有两个imageview,一个是自动,第二个是pro。我想要当我单击auto auto并更改图像图标,并且当我单击pro时自动取消选择auto view并选择pro view
autobtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
autobtn.setImageResource(R.drawable.autoactive);
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(ModeActivity.this);
SharedPreferences.Editor edit = sharedPreferences.edit();
edit.putString("focus_value", "focus_mode_auto");
Intent it = new Intent(ModeActivity.this, MainActivity.class);
startActivity(it);
edit.commit();
//MainActivity.grid.setVisibility(View.VISIBLE);
}
});
在第二张图片中选择了专业
您的自动按钮
autobtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
autobtn.setBackgroundResource(R.drawable.autoactive); //Change the AUTO image to selected
proButton.setBackgroundResource(R.drawable.proinactive); //Change image PRO to deselected
SaveButtonState("focus_mode_auto"); //Save the button state
Intent it = new Intent(ModeActivity.this, MainActivity.class);
startActivity(it);
}
});
您的PRO按钮
proButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
autoButton.setBackgroundResource(R.drawable.autoinactive); //Change the AUTO image to deselected
proButton.setBackgroundResource(R.drawable.proactive); //Change PRO image to selected
SaveButtonState("focus_mode_pro"); //Save the button state
Intent it = new Intent(ModeActivity.this, MainActivity.class);
startActivity(it);
}
});
保存方式
public void SaveButtonState(String bState){
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(ModeActivity.this);
SharedPreferences.Editor edit = sharedPreferences.edit();
edit.putString("focus_value", bState);
edit.commit();
}
加载方式
public String LoadButtonState(){
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
String buttonState = preferences.getString("focus_value", "DEFAULT");
return buttonState;
}
使用LoadButtonState()
在你onCreate()
当你的应用程序启动,喜欢的东西来检索按钮的最后状态:
在您的onCreate()方法中
String buttonState = LoadButtonState();
if(buttonState.equals("focus_mode_auto"){
aautobtn.setBackgroundResource(R.drawable.autoactive); //Change the AUTO image to selected
proButton.setBackgroundResource(R.drawable.proinactive); //Change image PRO to deselected
}
else if(buttonState.equals("focus_mode_pro"){
autoButton.setBackgroundResource(R.drawable.autoinactive); //Change the AUTO image to deselected
proButton.setBackgroundResource(R.drawable.proactive); //Change PRO image to selected
}
这样的事情。
是的,您可以在已经使用的状态下将按钮的状态保存在Prefresences中,并在两个按钮的单击侦听器处理程序上更改按钮的状态
您正在启动活动,然后才实际将值保存在SharedPreference
,这就是为什么您无法在MainActivity
获取保存的值的原因(可能是因为您试图在MainActivity
onCreate
中获取值)。
随便走
edit.commit();
之前
Intent it = new Intent(ModeActivity.this, MainActivity.class);
更新在onResume
执行此操作
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(ModeActivity.this);
String selectedBtn = SharedPreferences.getString("focus_value", "nothing_selected");
if(selectedBtn.equlas("focus_mode_auto"))
// Select the auto button
else
// select the pro button
您可以像这样使用SharedPreferences。
SharedPreferences sharedPreferences;
sharedPreferences = PreferenceManager.getDefaultSharedPreferences(ModeActivity.this);
SharedPreferences.Editor edit = sharedPreferences.edit();
edit.putBoolean("focus_value", false);
edit.putBoolean("auto_value", false);
edit.commit();
在您的按钮事件中
autobtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
boolean auto = edit.getBoolean("auto_value", false);
boolean pro = edit.getBoolean("pro_value", false);
if(!auto){
edit.putBoolean("auto_value", true);
autobtn.setImageResource(R.drawable.autoactive);
edit.putBoolean("pro_value",false);
probtn.setImageResource(R.drawable.xxxxx);
}
Intent it = new Intent(ModeActivity.this, MainActivity.class);
startActivity(it);
}
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.