问题
am working on camera application i have two imageview one is auto and second is pro i want when i click on auto auto is selected and image icon changes and when i click on pro automatically auto view deselected and pro view is selected
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);
}
});
in the second picture pro is selected
回答1:
You can use the SharedPreferences like this.
SharedPreferences sharedPreferences;
sharedPreferences = PreferenceManager.getDefaultSharedPreferences(ModeActivity.this);
SharedPreferences.Editor edit = sharedPreferences.edit();
edit.putBoolean("focus_value", false);
edit.putBoolean("auto_value", false);
edit.commit();
In your button event,
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);
}
});
回答2:
Your AUTO button
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);
}
});
Your PRO button
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);
}
});
Save method
public void SaveButtonState(String bState){
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(ModeActivity.this);
SharedPreferences.Editor edit = sharedPreferences.edit();
edit.putString("focus_value", bState);
edit.commit();
}
Load method
public String LoadButtonState(){
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
String buttonState = preferences.getString("focus_value", "DEFAULT");
return buttonState;
}
Use LoadButtonState()
in your onCreate()
to retrieve the last states of the buttons when your application starts, something like:
in your onCreate() method
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
}
Something like this.
回答3:
You are launching the activity before actually saving the value in SharedPreference
, that's why you are not able to fetch the saved value in MainActivity
(probably because you are trying to fetch the value in onCreate
of MainActivity
).
Just move
edit.commit();
before
Intent it = new Intent(ModeActivity.this, MainActivity.class);
Update Do this in 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
回答4:
Yes you can save the status for button in Prefresences as you already use and change the state of ther on both the click listener handler for both button
来源:https://stackoverflow.com/questions/35553811/save-the-state-of-button-in-android