Android Studio我不知道为什么它没有显示结果

时间:2014-12-25 03:30:40

标签: android

我通过Android Studio编写一个简单的应用程序,但是当我在智能手机上运行它时,它不会在tv_kq(textView)上显示结果。我不知道错误在哪里。请帮帮我。

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    bt1 = (Button)findViewById(R.id.button);
    et_a = (EditText) findViewById(R.id.editText);
    et_b = (EditText) findViewById(R.id.editText2);
    et_c = (EditText) findViewById(R.id.editText3);
    tv_kq = (TextView) findViewById(R.id.textView4);
    bt1.setOnClickListener(new click_ok());

}
class click_ok implements Button.OnClickListener{
public void OnClick(View v){

                int a = Integer.parseInt(et_a.getText().toString());
                int b = Integer.parseInt(et_b.getText().toString());
                int c = Integer.parseInt(et_c.getText().toString());
                int delta = b * b - 4 * a * c;

                if (a == 0)
                {
                    if (b == 0)
                    {
                        if (c==0) tv_kq.setText("Phương trình có vô số nghiệm");
                        else tv_kq.setText("Phương trình vô nghiệm");
                    }
                    else tv_kq.setText("Phương trình có 1 nghiệm: " +(-c/b));
                }
                else
                {
                    if (delta < 0 ) tv_kq.setText("Phương trình vô nghiệm");
                    else if (delta == 0 ) tv_kq.setText("Phương trình có nghiệm kép: "+ (-b/(2*a)));
                    else if (delta > 0) tv_kq.setText("Phương trình có 2 nghiệm phân biệt: "+ (((-b)+Math.sqrt(delta))/(2*a))+" và "+(((-b)-Math.sqrt(delta))/(2*a)));
                }

        }    

4 个答案:

答案 0 :(得分:0)

尝试更改此内容:bt1.setOnClickListener(new click_ok());

到:bt1.setOnClickListener(this);

并使用标准的onClick回调:

public void onClick(View v) {
    switch (v.getId()) {
        case R.id.button:

            // do stuff
            break;
    }
}

答案 1 :(得分:0)

bt1.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v)
    {
            int a = Integer.parseInt(et_a.getText().toString());
            int b = Integer.parseInt(et_b.getText().toString());
            int c = Integer.parseInt(et_c.getText().toString());
            int delta = b * b - 4 * a * c;

            if (a == 0)
            {
                if (b == 0)
                {
                    if (c==0) tv_kq.setText("Phương trình có vô số nghiệm");
                    else tv_kq.setText("Phương trình vô nghiệm");
                }
                else tv_kq.setText("Phương trình có 1 nghiệm: " +(-c/b));
            }
            else
            {
                if (delta < 0 ) tv_kq.setText("Phương trình vô nghiệm");
                else if (delta == 0 ) tv_kq.setText("Phương trình có nghiệm kép: "+ (-b/(2*a)));
                else if (delta > 0) tv_kq.setText("Phương trình có 2 nghiệm phân biệt: "+ (((-b)+Math.sqrt(delta))/(2*a))+" và "+(((-b)-Math.sqrt(delta))/(2*a)));
            }
    }
});
onCreate

中的

答案 2 :(得分:0)

尝试像这样添加它将解决您的错误

公共类MainActivity扩展Activity实现View.OnClickListener

答案 3 :(得分:0)

bt1.setOnClickListener(this); //dont forget to implement View.OnClickListener to your mainActivity

然后使用onClick回调:

@Override
public void onClick(View v) {
    switch (v.getId()) {
        case R.id.button:

            // do stuff

int a = Integer.parseInt(et_a.getText().toString());
            int b = Integer.parseInt(et_b.getText().toString());
            int c = Integer.parseInt(et_c.getText().toString());
            int delta = b * b - 4 * a * c;

            if (a == 0)
            {
                if (b == 0)
                {
                    if (c==0) tv_kq.setText("Phương trình có vô số nghiệm");
                    else tv_kq.setText("Phương trình vô nghiệm");
                }
                else tv_kq.setText("Phương trình có 1 nghiệm: " +(-c/b));
            }
            else
            {
                if (delta < 0 ) tv_kq.setText("Phương trình vô nghiệm");
                else if (delta == 0 ) tv_kq.setText("Phương trình có nghiệm kép: "+ (-b/(2*a)));
                else if (delta > 0) tv_kq.setText("Phương trình có 2 nghiệm phân biệt: "+ (((-b)+Math.sqrt(delta))/(2*a))+" và "+(((-b)-Math.sqrt(delta))/(2*a)));
            }
            break;
    }
}