java - 根据选中的 CheckBox 让 Button 做一些事情

标签 java android

我已经写了这段代码,请告诉我应该怎么做才能使按钮根据选中的复选框执行某些操作。

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_costi_di_impianto);
}

public void CalcolaC(View view) {

    double Onorario1,SpeseD1,CostI1,Iva1,Deb1,Rit1,ccp1,Netto1;
    //
    Onorario1 = 0;
    SpeseD1 = 0;
    ccp1 = 0;

    //
    EditText Onorario = (EditText) findViewById(R.id.Onorario);
    EditText SpeseD = (EditText) findViewById(R.id.SpeseD);
    TextView CostI = (TextView) findViewById(R.id.CostI);
    TextView Iva = (TextView) findViewById(R.id.Iva);
    TextView Deb = (TextView) findViewById(R.id.Deb);
    TextView Rit = (TextView) findViewById(R.id.Rit);
    TextView ccp = (TextView) findViewById(R.id.ccp);
    TextView Netto = (TextView) findViewById(R.id.Netto);
    final CheckBox checkBox1=(CheckBox)findViewById(R.id.checkBox1);
    final CheckBox checkBox2=(CheckBox)findViewById(R.id.checkBox2);
    //
    try{
        Onorario1 = Math.round(Double.parseDouble(Onorario.getText().toString())*100.0)/100.0;
        SpeseD1 = Math.round(Double.parseDouble(SpeseD.getText().toString())*100.0)/100.0;
    } catch (NumberFormatException e){
        ErrorMsg();
        Pulisci(view);
        return;
    }

    if(checkBox1.isChecked())
                ccp1 = Onorario1 * 2 / 100;
                Iva1 = (Onorario1 + ccp1)*22/100;
                Rit1 = (Onorario1+ccp1+Iva1+SpeseD1)*20/100;
                CostI1 = (Onorario1+ccp1+SpeseD1);
                Deb1 = (Onorario1+ccp1+Iva1+SpeseD1);
                Netto1 = (Onorario1+ccp1+Iva1+SpeseD1) - Rit1;
                //
                ccp.setText(Double.toString(round(ccp1,2)));
                Iva.setText(Double.toString(round(Iva1,2)));
                Rit.setText(Double.toString(round(Rit1,2)));
                CostI.setText(Double.toString(round(CostI1,2)));
                Deb.setText(Double.toString(round(Deb1,2)));
                Netto.setText(Double.toString(round(Netto1,2)));
    if(checkBox2.isChecked())
                ccp1 = Onorario1 * 4 / 100;
                Iva1 = (Onorario1 + ccp1)*22/100;
                Rit1 = (Onorario1+ccp1+Iva1+SpeseD1)*20/100;
                CostI1 = (Onorario1+ccp1+SpeseD1);
                Deb1 = (Onorario1+ccp1+Iva1+SpeseD1);
                Netto1 = (Onorario1+ccp1+Iva1+SpeseD1) - Rit1;
                //
                ccp.setText(Double.toString(round(ccp1,2)));
                Iva.setText(Double.toString(round(Iva1,2)));
                Rit.setText(Double.toString(round(Rit1,2)));
                CostI.setText(Double.toString(round(CostI1,2)));
                Deb.setText(Double.toString(round(Deb1,2)));
                Netto.setText(Double.toString(round(Netto1,2)));

    }

private void Pulisci(View view) {
    EditText Onorario = (EditText) findViewById(R.id.Onorario);
    EditText SpeseD = (EditText) findViewById(R.id.SpeseD);
    TextView CostI = (TextView) findViewById(R.id.CostI);
    TextView Iva = (TextView) findViewById(R.id.Iva);
    TextView Deb = (TextView) findViewById(R.id.Deb);
    TextView Rit = (TextView) findViewById(R.id.Rit);
    TextView ccp = (TextView) findViewById(R.id.ccp);
    TextView Netto = (TextView) findViewById(R.id.Netto);
    Onorario.setText("");
    SpeseD.setText("");
    CostI.setText("");
    Iva.setText("");
    Deb.setText("");
    Rit.setText("");
    ccp.setText("");
    Netto.setText("");

}

private void ErrorMsg() {
    AlertDialog Msg = new AlertDialog.Builder(this).create();
    Msg.setTitle("Errore");
    Msg.setMessage("Hai inserito dei dati non validi!");
    Msg.setButton(DialogInterface.BUTTON_POSITIVE, "OK",  new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int which) {
        }});
    Msg.show();
}
public static double round(double value, int places) {
    if (places < 0) throw new IllegalArgumentException();

    long factor = (long) Math.pow(10, places);
    value = value * factor;
    long tmp = Math.round(value);
    return (double) tmp / factor;
}

}

这是日志

02-11 13:20:11.880: E/AndroidRuntime(549): java.lang.IllegalStateException: Could not find a method onCheckboxClicked(View) in the activity class com.ITE.economiaaziendale.CostiDiImpianto for onClick handler on view class android.widget.CheckBox with id 'checkBox2'

最佳答案

你可以像这样使用监听器:

checkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
        @Override
        public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
            if (isChecked){

            } else {

            }
        }
});

关于java - 根据选中的 CheckBox 让 Button 做一些事情,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21706613/

相关文章:

java - 如何更改对象在集合中重复的含义?

java - spring-data-elasticsearch 在多个索引中搜索特定字段

java - Play 1.2.4 : Rendering XML in template

java - 如何将谷歌地图/代码放入viewpager中

android - 服务结束时发出通知声

java - 如何比较两个包含 Java 中同一类对象的 Arraylists?

Android - ViewPager Adapter,在实例化适配器之前设置主要项目

java - 如何在 android studio 应用程序中存储整数变量并检索它。

Android:如何向主 Activity 添加另一个 fragment

Java/JavaFX8 : Perform action when input in TextField has certain length