2016-11-22 13 views
0

私はダイアログに2つのチェックボックスを持っています。私はこれらのチェックボックスのための単一のチェックを設定したいと思います。つまり、チェックボックス1をチェックすると、チェックボックス2はチェックされません。チェックボックス2をチェックすると同様です。check_value変数は、チェックボックス1がチェックされている場合はtrueに設定され、チェックボックス2がチェックされている場合はfalseに設定されます。ダイアログのアンドロイドでチェックボックスを1つチェックする方法は?

これは私のコードですが、私は

@Override 
public Dialog onCreateDialog(final Bundle savedInstanceState) { 
    final AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); 
    final View dialogView = LayoutInflater.from(getActivity()).inflate(R.layout.fragment_dialogView, null); 
    boolean check_value=false; 

    checkbox1 = (CheckBox) dialogView.findViewById(R.id.checkbox1); 
    checkbox1.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { 
     @Override 
     public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 
      checkbox2.setChecked(false); 
      checkbox1.setChecked(true); 
      check_value=true; 
     } 
    }); 
    checkbox2 = (CheckBox) dialogView.findViewById(R.id.checkbox2); 
    checkbox2.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { 
     @Override 
     public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 
      checkbox2.setChecked(true); 
      checkbox1.setChecked(false); 
      check_value=false; 
     } 
    }); 
} 

これは私のxmlファイルで期待どおりに達成することはできません。チェックボックス1はデフォルトでtrueです。

<LinearLayout 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:orientation="horizontal" 
     android:layout_below="@+id/list" 
     android:layout_centerInParent="true"> 
    <CheckBox 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:id="@+id/checkbox1" 
     android:checked="true" 
     android:layout_marginLeft="2dp"/> 

    <CheckBox 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:id="@+id/checkbox2" 
     android:checked="false" 
     android:layout_marginLeft="2dp" /> 
</LinearLayout> 
+0

なぜラジオボタンではなくチェックボックスですか?彼らはこの目的のために生まれます –

+0

あなたはラジオボタンを使って私の質問に答えることができますか?私がダイアログに入れていることに注意してください。 – user3051460

+0

申し訳ありませんが、今はコンパイラがありません。 [ビルダーでカスタムレイアウトを使用する方法に関するこの記事](http://stackoverflow.com/questions/22655599/alertdialog-builder-with-custom-layout-and-edittext-cannot-access-view)をご覧ください。また、ラジオボタンの使い方については、[this link also](http://stackoverflow.com/questions/27785167/radio-buttons-in-android-studio)を参照することもできます。これが助けてくれるといいですか –

答えて

1

これを試してみてください:

@Override 
public Dialog onCreateDialog(final Bundle savedInstanceState) { 
final AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); 
final View dialogView = LayoutInflater.from(getActivity()).inflate(R.layout.fragment_dialogView, null); 
boolean check_value=false; 

checkbox1 = (CheckBox) dialogView.findViewById(R.id.checkbox1); 
checkbox1.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { 
    @Override 
    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 
     if(isChecked){ 
      checkbox2.setChecked(false); 
      check_value=true; 
     } 
     else 
      checkbox2.setChecked(true); 
    } 
}); 
checkbox2 = (CheckBox) dialogView.findViewById(R.id.checkbox2); 
checkbox2.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { 
    @Override 
    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 
     if(isChecked){ 
      checkbox1.setChecked(false); 
      check_value=false; 
     } 
     else 
      checkbox1.setChecked(true); 

    } 
});} 
+0

正しいものです。ありがとうございます – user3051460

+0

お待ちください。薄いcheck_valueは設定に間違いありませんか? – user3051460

+0

'check_value'で何をしますか? –

0

2つのラジオボタンがあるラジオグループを使用する必要があります。それはあなたが探しているデフォルト機能を持っています。チェックボックスはこのためのものではありません。

0

Androidでは、 "android.widget.CheckBox"クラスを使用してチェックボックスをレンダリングできます。

このチュートリアルでは、XMLファイルに3つのチェックボックスを作成する方法を示し、チェックボックスの状態(チェックボックスまたはチェックボックスなし)をチェックするリスナーの使用方法を示します。

https://www.mkyong.com/android/android-checkbox-example/

0

は、以下のコードが好きですか...

<RadioGroup 
     android:id="@+id/myRadioGroup" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_marginTop="5sp" 
     android:orientation="horizontal"> 
     <RadioButton 
      android:id="@+id/rbTrue" 
      android:layout_width="0dp" 
      android:layout_height="wrap_content" 
      android:layout_weight="1" 
      android:text="Accept"/> 
     <RadioButton 
      android:id="@+id/rbFalse" 
      android:layout_weight="1" 
      android:layout_width="0dp" 
      android:layout_height="wrap_content" 
      android:text="Reject"/> 
    </RadioGroup> 

を次に活動でのような...。ここ

RADIOGROUPが対象となりますかラジオボタンで構成されるラジオグループ

radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() { 
     @Override 
     public void onCheckedChanged(RadioGroup group, int checkedId) { 
      if(checkedId==R.id.rbTrue){ 
       check_value = true; 
      }else{ 
       check_value = false; 
      } 
     } 
    }); 
+0

'R.id.rbTrue'はDialogViewでは動作しません。私はそれを前に使った – user3051460

関連する問題