2017-03-24 22 views
0

チェックボックスをオンまたはオフにしたときにシークバーを有効または無効にしようとしています。CheckBoxで表示を無効にした後で再度有効にすることはできません

CheckBox checkBoxProva = (CheckBox) findViewById(R.id.checkbox_prova); 
boolean varCheckBoxProva = checkBoxProva.isChecked(); 

及び/無効にビューを有効にする場合は、このシンプル:

私が作成し、参照するために、これを使用してい

if (!varCheckBoxProva) { 
    seekBarProva.setEnabled(false); 
} 

これはすべてのonCreateの中にあります。

シークバーが無効になっているので(ifが機能するように)、チェックボックスをオンにしてもチェックボックスをオンにすると変更されません。

編集:@rohan bhatiaの返信に感謝しました。

答えて

0

あなたがチェックボックスを選択または選択解除したときに通知リスナーを必要とする()が実行されます。を参照してください。 onCreateでこれを指定する - onCheckedChangedとして

seekBarProva.setEnabled(checkBoxProva.isChecked()); 

を()のみがチェック状態の変化をリッスンので、あなたがライン上であまりにもことが必要になります初期段階を指定します。

+0

これは、ありがとう、働いた! – Francesco

0

は単にelseブロック

if (!varCheckBoxProva) { 
    seekBarProva.setEnabled(false); 
}else{ 
    seekBarProva.setEnabled(true); 
} 

代替ソリューション挿入します。個人的に

を、私はあなたのonCreateメソッド内のチェックボックスにリスナーを追加することをお勧めしたいです。

checkBoxProva.setOnClickListener(new OnClickListener() { 
      @Override 
     public void onClick(View v) { 
      if(varCheckBoxProva){ 
       seekBarProva.setEnabled(true); 
      }else{ 
       seekBarProva.setEnabled(false); 
      } 
     } 
}); 
1

あなたは活動が最初に作成されたときにのみ呼び出されますあなたのonCreate方法でこのすべてを行っています。チェックボックスがクリックされたときに起動されるリスナをセットアップする必要があります。あなたはまだ必要となります..あなたは、チェックボックスをクリックしたときにonCheckedChanged方法、したがって

checkBoxProva.setOnCheckedChangeListener(new new CompoundButton.OnCheckedChangeListener() { 

     @Override 
     public void onCheckedChanged(CompoundButton buttonView,boolean isChecked) { 

      seekBarProva.setEnabled(isChecked); 

     } 
    } 
);  

に... https://developer.android.com/guide/topics/ui/controls/checkbox.html

+0

それは問題ではありませんが、それでも動作するはずです。たとえば、onCreate内にボタンリスナーを作成することができます。 –

+0

@OusmaneMahyDiawしかし、OPはリスナーを使っているとは言いませんでした。私はこの答えが正しいと思います。私たちが知っているのは、彼らはただ一度状態をチェックしているということだけです。 – petehallw

+0

@petehallwは間違いなく同意します。 :) –

関連する問題