如何通过单击按钮启动方法

时间:2015-06-13 13:49:26

标签: android

我正在尝试通过单击按钮来启动方法。这个想法,请告诉我是否有更好的方法,是将一些计算的所有代码放入一个名为calculateratios的方法中。然后,一旦单击该按钮,它将运行一些if语句来检查并查看某些文本字段是否为空。如果没有,那么它运行方法calculateratios。否则显示一个叫“输入所有数据”的吐司。我有以下java。

Java文件

package com.th3ramr0d.poundforpound;

import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import org.w3c.dom.Text;

public class MainActivity extends AppCompatActivity {

Button calculate;
Button reset;

EditText inputname1;
EditText inputname2;
EditText inputbodyweight1;
EditText inputweightlifted1;
EditText inputbodyweight2;
EditText inputweightlifted2;


TextView outputname1;
TextView outputname2;
TextView outputratio1;
TextView outputratio2;
TextView finaloutput;

double inputbodyweight1var = 0;
double inputweightlifted1var = 0;
double inputbodyweight2var = 0;
double inputweightlifted2var = 0;
double ratio1 = 0;
double ratio2 = 0;

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

    calculate = (Button)findViewById(R.id.calculate);
    reset = (Button)findViewById(R.id.reset);

    inputname1 = (EditText)findViewById(R.id.inputname1);
    inputname2 = (EditText)findViewById(R.id.inputname2);
    inputbodyweight1 = (EditText)findViewById(R.id.inputbodyweight1);
    inputweightlifted1 = (EditText)findViewById(R.id.inputweightlifted1);
    inputbodyweight2 = (EditText)findViewById(R.id.inputbodyweight2);
    inputweightlifted2 = (EditText)findViewById(R.id.inputweightlifted2);

    outputname1 = (TextView)findViewById(R.id.outputname1);
    outputname2 = (TextView)findViewById(R.id.outputname2);
    outputratio1 = (TextView)findViewById(R.id.outputratio1);
    outputratio2 = (TextView)findViewById(R.id.outputratio2);
    finaloutput = (TextView)findViewById(R.id.finaloutput);


    reset.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v){
            inputname1.setText("");
            inputname2.setText("");
            inputbodyweight1.setText("");
            inputbodyweight2.setText("");
            inputweightlifted1.setText("");
            inputweightlifted2.setText("");
            outputname1.setText("");
            outputname2.setText("");
            outputratio1.setText("");
            outputratio2.setText("");
            finaloutput.setText("");

        }

    }
    );

//
//
//ThIS IS WHERE I WANT TO CLICK MY BUTTON TO CHECK IF STATEMENTS
//
//
    calculate.setOnClickListener(
            new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                calculateratios();


                }
            }
    );

}

//THIS IS THE METHOD I WANT TO RUN IF THE IFSTATEMENTS ALLOW IT

public void caculateratios(){
    String inputname1var = inputname1.getText().toString();
    String inputname2var = inputname2.getText().toString();

    inputbodyweight1var = Integer.parseInt(inputbodyweight1.getText().toString());
    inputweightlifted1var = Integer.parseInt(inputweightlifted1.getText().toString());
    inputbodyweight2var = Integer.parseInt(inputbodyweight2.getText().toString());
    inputweightlifted2var = Integer.parseInt(inputweightlifted2.getText().toString());


    double ratio1 = inputweightlifted1var / inputbodyweight1var;
    double ratio2 = inputweightlifted2var / inputbodyweight2var;

    outputname1.setText(inputname1var);
    outputname2.setText(inputname2var);

    outputratio1.setText(String.format("%.2f" + ": 1", ratio1));
    outputratio2.setText(String.format("%.2f" + ": 1", ratio2));

    if (ratio1 > ratio2){
        double strengthdif = ratio2 / ratio1;
        strengthdif = (1 - strengthdif) * 100;
        finaloutput.setText(inputname1var + " is stronger than " + inputname2var + " by " + (String.format("%.2f", strengthdif)) + "%");
    }
    else{
        double strengthdif = ratio1 / ratio2;
        strengthdif = (1 - strengthdif) * 100;

        finaloutput.setText(inputname2var + " is stronger than " + inputname1var + " by " + (String.format("%.2f", strengthdif)) + "%");
    }
};

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.menu_main, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // Handle action bar item clicks here. The action bar will
    // automatically handle clicks on the Home/Up button, so long
    // as you specify a parent activity in AndroidManifest.xml.
    int id = item.getItemId();

    //noinspection SimplifiableIfStatement
    if (id == R.id.action_settings) {
        return true;
    }

    return super.onOptionsItemSelected(item);
}

}

问题是我不确定如何使用这种方法。当我将它设置为高于onClick上调用的calculateratios()时,它是红色的,logcat说:

错误:(87,21)错误:找不到符号方法calculateratios()

有关如何正确设置的任何帮助?谢谢!

2 个答案:

答案 0 :(得分:3)

calculateratios()末尾有一个额外的分号(; )(也是拼写错误)。
删除它。
并调整方法名称。

答案 1 :(得分:3)

您在按钮单击方法中调用的方法名称与您尝试调用的方法名称不匹配...说实话,如果您使用IDE,我不知道您的代码是如何编译的。将onClick更改为以下内容:

calculate.setOnClickListener(
        new View.OnClickListener() {
            @Override
            public void onClick(View v) {
            //OLD:   calculateratios();
            /*NEW:*/ caculateratios();
            }
        }
);
相关问题