[英]Shared Preference saving the checkbox action
我能夠使用共享偏好來存儲復選框的值,但我沒能拯救行動它的意思do.The行動我需要的是當復選框被選中一個按鈕將顯示,如果復選框未被選中按鈕不應顯示(隱藏/顯示按鈕是在其他活動中完成的)。 所以我所做的就是我傳遞了值isCheckedValue = isChecked;
在if / else條件下
final CheckBox checkBox = (CheckBox) findViewById(R.id.add_fb);
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
final SharedPreferences.Editor editor = preferences.edit();
checkBox.setChecked(preferences.getBoolean("checked",false));
checkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
isCheckedValue = isChecked;
editor.putBoolean("checked", isChecked);
editor.apply();
if(checkBox.isChecked()) {
isCheckedValue = isChecked;
editor.putBoolean("checked", true);
editor.apply();
}else{
editor.putBoolean("checked", false);
editor.apply();
}
}
});
如果選中了chkbox,則該值將在onBubbleClick
使用intent傳遞, onBubbleClick
使用in.putExtra("yourBoolName", isCheckedValue );
的布爾值傳遞數據in.putExtra("yourBoolName", isCheckedValue );
您可以在下面的一堆代碼中注意到它
private void addNewBubble() {
BubbleLayout bubbleView = (BubbleLayout)LayoutInflater.from(MainActivity.this).inflate(R.layout.bubble_layout, null);
bubbleView.setOnBubbleRemoveListener(new BubbleLayout.OnBubbleRemoveListener() {
@Override
public void onBubbleRemoved(BubbleLayout bubble) {
finish();
System.exit(0);
}
});
bubbleView.setOnBubbleClickListener(new BubbleLayout.OnBubbleClickListener() {
@Override
public void onBubbleClick(BubbleLayout bubble) {
Intent in = new Intent(MainActivity.this, PopUpWindow.class);
in.putExtra("yourBoolName", isCheckedValue );
startActivity(in);
}
});
bubbleView.setShouldStickToWall(true);
bubblesManager.addBubble(bubbleView, 60, 20);
}
工作原理:一開始,直到單擊該復選框,該按鈕才會顯示;一旦選中該復選框,該按鈕就會顯示出來,即使取消選中該復選框也不會隱藏。
工作原理如果已選中復選框,則應顯示按鈕;如果未選中此復選框,則應隱藏按鈕。
在if-else塊中,您實際上並沒有在false
條件下更新isCheckedValue
的值。 因此,這需要解決。 我也重構了您的代碼。 請嘗試以下操作:
final CheckBox checkBox = (CheckBox) findViewById(R.id.add_fb);
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
final SharedPreferences.Editor editor = preferences.edit();
checkBox.setChecked(preferences.getBoolean("checked",false));
checkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
isCheckedValue = isChecked;
editor.putBoolean("checked", isChecked);
editor.apply();
}
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.