[英]Save state button sharedpreferences Android
我有一個浮動按鈕(不久后是一個按鈕),當我單擊它時,它會啟動服務和按鈕更改圖標。 我以這種方式嘗試過:
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));
}
}
});
並獲取狀態:
SharedPreferences sharedPrefs = getSharedPreferences("com.mypck.asd", MODE_PRIVATE);
mFab.setChecked(sharedPrefs.getBoolean("NameOfThingToSave", true));
但是不能以這種方式工作,因為setChecked
方法用於切換按鈕。.相反,我的按鈕很簡單! 我該如何解決?
所以只要在服務運行或不在if-else
條件下將按鈕的兩個狀態都保存在SharedPreference
如true和false
看下面的代碼。
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();
更新:
要檢索值,您必須喜歡
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));
}
更換
mFab.setDrawable(getResources().getDrawable(R.drawable.ic_play));
與我上面的代碼。
確定,只需將狀態保存為您的首選項即可。
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();
}
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.