【问题标题】:Put check box listener into button listener将复选框监听器放入按钮监听器
【发布时间】:2018-04-25 20:04:00
【问题描述】:

我在 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();
                        }
                    }

                });
            }

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

【问题讨论】:

  • "" 单击保存按钮时,如果选中复选框,它将显示复选框文本。 ” “那你为什么要写这个声明?如果您想执行检查侦听器,那么您应该编写它。对所有视图都有效
  • @gvsharma 代码看起来正确吗?必须有两个 onClick ?
  • 其实你不需要写 onclick 或者检查checkBox的监听器。删除复选框的该方法。因为您已经在按钮单击中检查复选框状态。
  • @gvsharma 如果我删除addListenerOnChk(),单击保存按钮时不会显示复选框文本
  • checkbox=(CheckBox)findViewById(R.id.checkBox); 在为 save 按钮调用 onClick 侦听器之前,在 onCreate() 方法中添加这一行。

标签: java android button checkbox onclicklistener


【解决方案1】:

第一种方法是正确的..

第二种方法不是必须的。 checkBox.isChecked 是您需要使用的一切。您不必为复选框设置侦听器。

【讨论】:

    【解决方案2】:
    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("");
    }
       }
    });
    

    希望对你有帮助

    【讨论】:

      【解决方案3】:

      参考这个问题

      “我怎样才能把复选框放在 save 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);
          }
      

      【讨论】:

        猜你喜欢
        • 2013-12-24
        • 2011-11-22
        • 2013-06-14
        • 1970-01-01
        • 1970-01-01
        • 2012-02-07
        • 1970-01-01
        • 2021-02-15
        • 1970-01-01
        相关资源
        最近更新 更多