我能夠使用共享首選項來存儲複選框的值,但我無法保存動作其意圖做的事情。我需要的操作是當複選框被選中時按鈕應該顯示,如果複選框未選中,按鈕不應該顯示(隱藏/顯示按鈕在不同的活動中完成)。所以我所做的是我下的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
in.putExtra("yourBoolName", isCheckedValue);
你可以在注意到它下面一串代碼
isCheckedValue = isChecked;
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);
}
工作原理:在一開始的按鈕不會顯示該複選框被點擊,直到一旦複選框被選中,並從來沒有選中該複選框後,獲取隱藏的按鈕被顯示出來。
它是如何工作的如果複選框被選中並且按鈕應該隱藏,如果複選框未被選中,該按鈕應該顯示。
嘗試使用'.commit()'而不是'.apply()',我相信'.commit'是同步的,而另一個則在後臺運行。 – CookieMonster
@CookieMonster它並沒有真正幫助。 –