簡體   English   中英

共享首選項保存復選框操作

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM