i've got a floatingbutoon (it's a button shortly), and when i click on it it starts a service and the button change icon. I tried in this way:
mFab = (FloatingActionButton)findViewById(R.id.fabbutton);
mFab.setDrawable(getResources().getDrawable(R.drawable.ic_play));
mFab.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
if (RunService.isRunning) {
RunService.stopRun(MainActivity.this);
mFab.setDrawable(getResources().getDrawable(R.drawable.ic_play));
SharedPreferences.Editor editor = getSharedPreferences("com.mypck.asd", MODE_PRIVATE).edit();
editor.putBoolean("NameOfThingToSave", true);
editor.commit();
} else {
startService(new Intent(MainActivity.this, RunService.class));
mFab.setDrawable(getResources().getDrawable(R.drawable.ic_pause));
}
}
});
and to retrieve the state:
SharedPreferences sharedPrefs = getSharedPreferences("com.mypck.asd", MODE_PRIVATE);
mFab.setChecked(sharedPrefs.getBoolean("NameOfThingToSave", true));
But not working in this way because setChecked
method is for a toggle button..Instead mine is a simple button! How can i solve?
So just save both state of button in SharedPreference
like, true and false when Service is running or not in if-else
condition
Look at below code.
SharedPreferences.Editor editor = getSharedPreferences("com.mypck.asd", MODE_PRIVATE).edit();
if (RunService.isRunning) {
RunService.stopRun(MainActivity.this);
mFab.setDrawable(getResources().getDrawable(R.drawable.ic_play));
editor.putBoolean("NameOfThingToSave", true);
} else {
startService(new Intent(MainActivity.this, RunService.class));
mFab.setDrawable(getResources().getDrawable(R.drawable.ic_pause));
editor.putBoolean("NameOfThingToSave", false);
}
editor.commit();
Update:
To retrieving values you have to do like,
SharedPreferences sharedPrefs = getSharedPreferences("com.mypck.asd", MODE_PRIVATE);
boolean buttonState = sharedPrefs.getBoolean("NameOfThingToSave", true);
if(buttonState)
{
mFab.setDrawable(getResources().getDrawable(R.drawable.ic_play));
}else{
mFab.setDrawable(getResources().getDrawable(R.drawable.ic_pause));
}
replace
mFab.setDrawable(getResources().getDrawable(R.drawable.ic_play));
with my above code.
Ok just save the state in your preference.
mFab.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
SharedPreferences.Editor editor = getSharedPreferences("com.mypck.asd", MODE_PRIVATE).edit();
if (RunService.isRunning) {
RunService.stopRun(MainActivity.this);
mFab.setDrawable(getResources().getDrawable(R.drawable.ic_play));
editor.putBoolean("NameOfThingToSave", true);
} else {
startService(new Intent(MainActivity.this,RunService.class));
mFab.setDrawable(getResources().getDrawable(R.drawable.ic_pause));
editor.putBoolean("NameOfThingToSave", false);
}
editor.commit();
}
});
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.