2011-12-05 1 views
68

リスナーをcheckBoxに配置したいと考えています。私は情報を探し、それがこのようなものです:Android:チェックボックスリスナー

satView = (CheckBox)findViewById(R.id.sateliteCheckBox); 

    satView.setOnCheckedChangeListener(new OnCheckedChangeListener() { 
     @Override 
     public void onCheckedChanged(RadioGroup group, int checkedId) { 
      if (isChecked){ 
       // perform logic 
      } 
     } 

    }); 

問題は、EclipseはそれがRadioGroupためOnCheckedChangeListenerだと考えて、それが動作しないということです。これをどうすれば解決できますか?

答えて

185

あなたはこれを行うことができます:CompoundButton buttonView

satView.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { 

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

     } 
    } 
);  
+1

ありがとうとここでそれを削除する方法です: http://stackoverflow.com/questions/18881817/removing-strikethrough-from-textview – Michal

+0

'OnCheckedChangeListener'と' CompoundButton.OnCheckedChangeListener'があります異なる。 – zionpi

4

変更RadioGroup groupをしてから輸入を修正するには、Ctrl + Shiftキー+ Oを押してください。

3

が、これは

satView.setOnCheckedChangeListener(new android.widget.CompoundButton.OnCheckedChangeListener.OnCheckedChangeListener() { 
     @Override 
     public void onCheckedChanged(RadioGroup group, int checkedId) { 
      if (isChecked){ 
       // perform logic 
      } 
     } 

    }); 
6

これを試してみてください:あなたは、単純なonClickListenerのために行くことがあり、このことができます

satView = (CheckBox) findViewById(R.id. sateliteCheckBox); 

satView.setOnCheckedChangeListener(new OnCheckedChangeListener() { 
    @Override 
    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 
      if (buttonView.isChecked()) { 
       //checked 
      } 
      else 
      { 
       //not checked 
      } 

}); 

希望...

39

satView.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       // TODO Auto-generated method stub 
       if(satView.isChecked()){ 
        System.out.println("Checked"); 
       }else{ 
        System.out.println("Un-Checked"); 
       } 
      } 
     }); 
+0

チェックボックス**のクリックアクション**を聞きたかったときの解決策は本当に1つだけでした。 – Acuna

16

あなたにあなたがimpのためにエラーを取得するorted間違っpackage.Youはimport android.widget.CompoundButton.OnCheckedChangeListener;

だから、コールバックは、あるべきはずです

 box.setOnCheckedChangeListener(new OnCheckedChangeListener() { 

     @Override 
     public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 
      // TODO Auto-generated method stub 

     } 
    }); 
4

あなたはこのコードを使用することができます。

public class MySampleActivity extends Activity { 
    CheckBox cb1, cb2, cb3, cb4; 
    LinearLayout l1, l2, l3, l4; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     cb1 = (CheckBox) findViewById(R.id.cb1); 
     cb2 = (CheckBox) findViewById(R.id.cb2); 
     cb3 = (CheckBox) findViewById(R.id.cb3); 
     cb4 = (CheckBox) findViewById(R.id.cb4); 
     l1 = (LinearLayout) findViewById(R.id.l1); 
     l2 = (LinearLayout) findViewById(R.id.l2); 
     l3 = (LinearLayout) findViewById(R.id.l3); 
     l4 = (LinearLayout) findViewById(R.id.l4); 
    } 

    @Override 
    protected void onPostCreate(Bundle savedInstanceState) { 
     super.onPostCreate(savedInstanceState); 
     cb1.setOnCheckedChangeListener(new MyCheckedChangeListener(1)); 
     cb1.setOnCheckedChangeListener(new MyCheckedChangeListener(2)); 
     cb1.setOnCheckedChangeListener(new MyCheckedChangeListener(3)); 
     cb1.setOnCheckedChangeListener(new MyCheckedChangeListener(4)); 
    } 

    public class MyCheckedChangeListener implements CompoundButton.OnCheckedChangeListener { 
     int position; 

     public MyCheckedChangeListener(int position) { 
      this.position = position; 
     } 

     private void changeVisibility(LinearLayout layout, boolean isChecked) { 
      if (isChecked) { 
       l1.setVisibility(View.VISIBLE); 
      } else { 
       l1.setVisibility(View.GONE); 
      } 

     } 

     @Override 
     public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 
      switch (position) { 
       case 1: 
        changeVisibility(l1, isChecked); 
        break; 
       case 2: 
        changeVisibility(l2, isChecked); 
        break; 
       case 3: 
        changeVisibility(l3, isChecked); 
        break; 
       case 4: 
        changeVisibility(l4, isChecked); 
        break; 
      } 
     } 
    } 
} 
+0

なぜ 'LinearLayout'を 'changeVisibility(LinearLayout layout、boolean isChecked)'メソッドに渡していますが、毎回レイアウトの可視性を変更しているだけですか? –

1
h.chk.setOnClickListener(new View.OnClickListener() 
{ 
    @Override 
    public void onClick(View view) 
    { 
     CheckBox chk=(CheckBox)view; // important line and code work 
     if(chk.isChecked()) 
     { 
      Message.message(a,"Clicked at"+position); 
     } 
     else 
     { 
      Message.message(a,"UnClick"); 
     } 
    } 
}); 
+0

ようこそスタックオーバーフロー!どのように動作するかを説明するために、[編集](http://stackoverflow.com/posts/39051766/edit)でこの回答をより良くすることができます。 – dorukayhan