簡體   English   中英

我如何確保從單選按鈕組中選擇單選按鈕會影響其他單選按鈕組中單選按鈕的選擇。

[英]How do i ensure that the selection of a radio button from a radio group affects the selection of a radio button in a different radio group.

<TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="16dp"
        android:paddingLeft="24dp"
        android:text="1. Do you have an anti-virus installed on your computer :"
        android:textAllCaps="false" />

    <RadioGroup
        android:id="@+id/radio_virus"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:paddingLeft="48dp">

        <RadioButton
            android:id="@+id/radio_virusyes"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:checked="true"
            android:onClick="assessUserInput"
            android:text="Yes" />

        <RadioButton
            android:id="@+id/radio_virusno"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:onClick="assessUserInput"
            android:text="No" />
    </RadioGroup>

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:paddingLeft="48dp"
        android:text="If No, skip question 2"
        android:textAllCaps="false" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="8dp"
        android:paddingLeft="24dp"
        android:text="2. How many anti-viruses do you use on your laptop :"
        android:textAllCaps="false" />

    <RadioGroup
        android:id="@+id/radio_avnumber"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:paddingLeft="48dp">

        <RadioButton
            android:id="@+id/radio_avnumberone"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:onClick="assessUserInput"
            android:text="1" />

        <RadioButton
            android:id="@+id/radio_avnumbermore"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:onClick="assessUserInput"
            android:text="More than 1" />
    </RadioGroup>

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="16dp"
        android:paddingLeft="24dp"
        android:text="3. Do you use pop-up/advert blockers:"
        android:textAllCaps="false" />

    <RadioGroup
        android:id="@+id/radio_adblock"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:paddingLeft="48dp">

        <RadioButton
            android:id="@+id/radio_adblockyes"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:checked="true"
            android:onClick="assessUserInput"
            android:text="Yes" />

        <RadioButton
            android:id="@+id/radio_adblockno"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:onClick="assessUserInput"
            android:text="No" />
    </RadioGroup>

與其寫文本來指導用戶在他之后跳過問題2,
在問題1中選擇“否”,我希望能夠找到一種方法,當用戶選擇“否”時,使用Java或xml代碼禁用問題二。 或自動將第二個問題帶走。

活動:(注意:我不知道為什么要使用這些字符串,因此我將它們與禁用方法分開了,但是如果用戶按下no,它將禁用單選​​按鈕,而當用戶按下yes時,它們將啟用)

public class main extends Activity
{

        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.mainz);
            RadioGroup radioGroup = (RadioGroup) findViewById(R.id.radio_virus);
            radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
                @Override
                public void onCheckedChanged(RadioGroup group, int checkedId) {
                    RadioGroup rg1        = (RadioGroup) findViewById(R.id.radio_avnumber);
                    Log.w("","click!");
                    if (checkedId == R.id.radio_virusno) {
                        Log.w("","asdasda");
                        for (int i = 0; i < rg1.getChildCount(); i++) {
                            rg1.getChildAt(i).setEnabled(false);
                        }

                    }else
                    {
                        Log.w("","else");
                        for (int i = 0; i < rg1.getChildCount(); i++) {
                            rg1.getChildAt(i).setEnabled(true);
                        }

                    }
                }
            });
        }


        public void assessUserInput(View view){
            //// constructor method for Radio Group : Radio_virus
            RadioGroup rgVirus=(RadioGroup)findViewById(R.id.radio_virus);
            String radioVirus=((RadioButton)findViewById(rgVirus.getCheckedRadioButtonId())).getText().toString();

            //// constructor method for Radio Group : Radio_avnumber
            RadioGroup rgAvnNumber=(RadioGroup)findViewById(R.id.radio_avnumber);
            String radioAvNumber=((RadioButton)findViewById(rgAvnNumber.getCheckedRadioButtonId())).getText().toString();

            /// constructor method for Radio Group : Radio_adblock
            RadioGroup rgAdBlock=(RadioGroup)findViewById(R.id.radio_adblock);
            String radioAdBlock=((RadioButton)findViewById(rgAdBlock.getCheckedRadioButtonId())).getText().toString();

            // constructor method for Input field
            //EditText nameTextField=(EditText)findViewById(R.id.edit_name);
            //String hasName=nameTextField.getText().toString();

        }
    }

使用的xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent">
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="16dp"
        android:paddingLeft="24dp"
        android:text="1. Do you have an anti-virus installed on your computer :"
        android:textAllCaps="false" />

    <RadioGroup
        android:id="@+id/radio_virus"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:paddingLeft="48dp">

        <RadioButton
            android:id="@+id/radio_virusyes"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:checked="true"
            android:text="Yes" />

        <RadioButton
            android:id="@+id/radio_virusno"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="No" />
    </RadioGroup>

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:paddingLeft="48dp"
        android:text="If No, skip question 2"
        android:textAllCaps="false" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="8dp"
        android:paddingLeft="24dp"
        android:text="2. How many anti-viruses do you use on your laptop :"
        android:textAllCaps="false" />

    <RadioGroup
        android:id="@+id/radio_avnumber"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:paddingLeft="48dp">

        <RadioButton
            android:id="@+id/radio_avnumberone"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="1" />

        <RadioButton
            android:id="@+id/radio_avnumbermore"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="More than 1" />
    </RadioGroup>

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="16dp"
        android:paddingLeft="24dp"
        android:text="3. Do you use pop-up/advert blockers:"
        android:textAllCaps="false" />

    <RadioGroup
        android:id="@+id/radio_adblock"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:paddingLeft="48dp">

        <RadioButton
            android:id="@+id/radio_adblockyes"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:checked="true"
            android:text="Yes" />

        <RadioButton
            android:id="@+id/radio_adblockno"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="No" />
    </RadioGroup>
</LinearLayout>

您必須處理單選按鈕的onClick:

public void assessUserInput(View view) {
    // Is the button now checked?
    boolean checked = ((RadioButton) view).isChecked();

    // Check which radio button was clicked
    switch(view.getId()) {
        case R.id.radio_virusyes:
                if (checked){
                      for(int i = 0; i <  radio_avnumber.getChildCount(); i++){
               ((RadioButton)radio_avnumber.getChildAt(i)).setEnabled(true);}}
            break;
        case R.id.radio_virusno:
            if (checked){
                for(int i = 0; i <  radio_avnumber.getChildCount(); i++){
        ((RadioButton)radio_avnumber.getChildAt(i)).setEnabled(false);}
    }
            break;
    }
}
public void assessUserInput(View view) {
    //// constructor method for Radio Group : Radio_virus
    RadioGroup rgVirus = (RadioGroup) findViewById(R.id.radio_virus);
    String radioVirus = ((RadioButton) findViewById(rgVirus.getCheckedRadioButtonId())).getText().toString();

    //// constructor method for Radio Group : Radio_avnumber
    RadioGroup rgAvnNumber = (RadioGroup) findViewById(R.id.radio_avnumber);
    String radioAvNumber = ((RadioButton) findViewById(rgAvnNumber.getCheckedRadioButtonId())).getText().toString();

    /// constructor method for Radio Group : Radio_adblock
    RadioGroup rgAdBlock = (RadioGroup) findViewById(R.id.radio_adblock);
    String radioAdBlock = ((RadioButton) findViewById(rgAdBlock.getCheckedRadioButtonId())).getText().toString();

    // constructor method for Input field
    EditText nameTextField = (EditText) findViewById(R.id.edit_name);
    String hasName = nameTextField.getText().toString();

    // Is the button now checked

    radioVirus.setOnCheckedChangeListener(new OnCheckedChangeListener() {
        @Override
        public void onCheckedChanged(RadioGroup group, int checkedId) {
            if (checkedId = radio_virusno) {
            //set the style of the things you want to disable here

            }
        }
    });

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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