将复选框监听器放入按钮监听器

时间:2016-02-13 17:37:02

标签: java android button checkbox onclicklistener

我在 Activtiy A 中有一个保存buttoncheckbox

点击保存button后,如果checkbox 已选中,则会显示checkbox文字。

         save.setOnClickListener(new View.OnClickListener() { // if save button clicked

                         @Override
                         public void onClick(View v) {
                                 if(checkbox.isChecked()) {
                                     returnIntent.putExtra("outstation", checkbox.getText().toString());
                                     Toast.makeText(getApplicationContext(),checkbox.getText().toString(),Toast.LENGTH_LONG).show();
                                 }
                              }
                          });

     public void addListenerOnChk() // for checkbox
        {
            checkbox=(CheckBox)findViewById(R.id.checkBox);

            checkbox.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {

                        if(((CheckBox)v).isChecked())
                        {
                              // Toast.makeText(getApplicationContext(),checkbox.getText().toString(),Toast.LENGTH_LONG).show();
                        }
                    }

                });
            }

上面的代码工作正常,但看起来很奇怪。我在addListenerOnChk()方法中定义OnCreate。如何将复选框保存在保存onClick内,而不是创建两个单独的OnClick? (一个是保存按钮,另一个是复选框)

3 个答案:

答案 0 :(得分:2)

第一种方法是正确的..

第二种方法不是必需的。 checkBox.isChecked是您需要使用的所有内容..您也不必为复选框设置监听器。

答案 1 :(得分:1)

save.setOnClickListener(new View.OnClickListener() { // if save button clicked

  @Override
  public void onClick(View v) {
 if(checkbox.isChecked()) {
returnIntent.putExtra("outstation", checkbox.getText().toString());
Toast.makeText(getApplicationContext(),checkbox.getText().toString(),Toast.LENGTH_LONG).show();
checkbox.setText("your text here");
      } else {
checkbox.setText("");
}
   }
});

希望这有帮助

答案 2 :(得分:1)

参考这个问题

  

“如何将复选框放在保存onClick而不是创建两个单独的OnClick?”

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //your UI setup and findViewById stuff

        save.setOnClickListener(this);//implement - View.OnClickListener
        checkBox.setOnClickListener(this);//implement - View.OnClickListener
        checkBox.setOnCheckedChangeListener(this);//prefer this one get check box status

    }


    @Override
    public void onClick(View v) {

        if(v.getId()==R.id.save_button){
            //save button action stuff
        } else if(v.getId()==R.id.check_box){
            //checkbox  button action stuff
            Log.i("TAG", " Check box status " + checkBox.isChecked());
        }

    }

    @Override
    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
        Log.i("TAG", " Check box status " + isChecked);
    }