亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在Java中使用復選框的開關進行多種組合?

如何在Java中使用復選框的開關進行多種組合?

拉風的咖菲貓 2023-08-16 18:21:15
這是我在這里發表的第一篇文章,所以它可能做得不太好...我是一名軟件開發學生,現在我正在學習 Android 應用程序開發。我被要求制作一個帶有 4 個復選框的程序,這樣當我選中其中任何一個時,應用程序就會顯示一張特定的圖片。例如。復選框 1:人員。復選框 2:汽車。復選框 3:街道。復選框 4:音樂。如果我檢查 1(人)和 2(汽車),它應該在同一張圖片中顯示一個人和一輛車......我正在研究這個。我認為這是制作該程序的好方法,但我不知道如何使其正常工作。我嘗試這樣做:MainActivity.Java:package com.example.myapplication;import androidx.appcompat.app.AppCompatActivity;import android.os.Bundle;import android.widget.CheckBox;import android.widget.ImageView;public class MainActivity extends AppCompatActivity {? ? CheckBox cb1, cb2, cb3, cb4;? ? ImageView img;? ? @Override? ? protected void onCreate(Bundle savedInstanceState) {? ? ? ? super.onCreate(savedInstanceState);? ? ? ? setContentView(R.layout.activity_main);? ? ? ? cb1 = findViewById(R.id.persona);? ? ? ? cb2 = findViewById(R.id.car);? ? ? ? cb3 = findViewById(R.id.calle);? ? ? ? cb4 = findViewById(R.id.music);? ? ? ? img = findViewById(R.id.imagen);? ? ? ? int pattern = (cb1.isSelected() ? 0b0001 : 0)? ? ? ? ? ? ? ? | (cb2.isSelected() ? 0b0010 : 0)? ? ? ? ? ? ? ? | (cb3.isSelected() ? 0b0100 : 0)? ? ? ? ? ? ? ? | (cb4.isSelected() ? 0b1000 : 0);? ? ? ? switch (pattern) {// No selection? ? ? ? ? ? case 0b0000:? ? ? ? ? ? ? ? img.setImageResource(R.drawable.def);? ? ? ? ? ? ? ? break;? ? ? ? ? ? //Person? ? ? ? ? ? case 0b0001:? ? ? ? ? ? ? ? img.setImageResource(R.drawable.wick);? ? ? ? ? ? ? ? break;? ? ? ? ? ? //Car? ? ? ? ? ? case 0b0010:? ? ? ? ? ? ? ? img.setImageResource(R.drawable.car);? ? ? ? ? ? ? ? break;? ? ? ? }? ? }}但是當我運行應用程序時,它只顯示默認圖像(似乎只有 case 0b0000 有效?),即使我在 xml 中創建了一個特定的復選框選中=“true”...我也嘗試為每個創建一個 onClick 事件復選框來擁有它,但似乎我沒有以正確的方式使用模式變量。如果我得到幫助,我將非常感激...我想我可以用 Ifs 來做到這一點,但我個人對我在帖子中讀到的方式感興趣哈哈哈。
查看完整描述

1 回答

?
Qyouu

TA貢獻1786條經驗 獲得超11個贊

您需要將偵聽器附加到復選框并將該模式檢查移至方法內部onCheckedChanged()。通過這種方式,您的復選框可以通知活動并重新計算 的值pattern:


public class MainActivity extends AppCompatActivity implements CompoundButton.OnCheckedChangeListener {


    CheckBox cb1, cb2, cb3, cb4;

    ImageView img;


    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);


        cb1 =  findViewById(R.id.persona);

        cb2 = findViewById(R.id.car);

        cb3 = findViewById(R.id.calle);

        cb4 = findViewById(R.id.music);

        img = findViewById(R.id.imagen);


        cb1.setOnCheckedChangeListener(this);

        cb2.setOnCheckedChangeListener(this);

        cb3.setOnCheckedChangeListener(this);

        cb4.setOnCheckedChangeListener(this);

    }


    @Override

    public void onCheckedChanged(CompoundButton compoundButton, boolean isChecked) {

        int pattern = (cb1.isChecked() ? 0b0001 : 0)

                | (cb2.isChecked() ? 0b0010 : 0)

                | (cb3.isChecked() ? 0b0100 : 0)

                | (cb4.isChecked() ? 0b1000 : 0);

        switch (pattern) {

            // No selection

            case 0b0000:

                img.setImageResource(R.drawable.def);

                break;

            //Person

            case 0b0001:

                img.setImageResource(R.drawable.wick);

                break;

            //Car

            case 0b0010:

                img.setImageResource(R.drawable.car);

                break;

        }

    }

}


查看完整回答
反對 回復 2023-08-16
  • 1 回答
  • 0 關注
  • 123 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號