android中计算器功能的错误

时间:2015-12-16 12:56:51

标签: android

我是android的新手,我试图实现自己的代码。 没有错误,但应用程序无法正常工作.. 这是我的代码......

public class MainActivity extends ActionBarActivity implements OnClickListener {

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

        Button b0 = (Button) findViewById(R.id.button0);
        b0.setOnClickListener(this);
        Button b1 = (Button) findViewById(R.id.button1);
        b1.setOnClickListener(this);
        Button b2 = (Button) findViewById(R.id.button2);
        b2.setOnClickListener(this);
        Button b3 = (Button) findViewById(R.id.button3);
        b3.setOnClickListener(this);
        Button b4 = (Button) findViewById(R.id.button4);
        b4.setOnClickListener(this);
        Button b5 = (Button) findViewById(R.id.button5);
        b5.setOnClickListener(this);
        Button b6 = (Button) findViewById(R.id.button6);
        b6.setOnClickListener(this);
        Button b7 = (Button) findViewById(R.id.button7);
        b7.setOnClickListener(this);
        Button b8 = (Button) findViewById(R.id.button8);
        b8.setOnClickListener(this);
        Button b9 = (Button) findViewById(R.id.button9);
        b9.setOnClickListener(this);
        Button bplus = (Button) findViewById(R.id.button12);
        bplus.setOnClickListener(this);
        Button bminus = (Button) findViewById(R.id.button13);
        bminus.setOnClickListener(this);
        Button bmul = (Button) findViewById(R.id.button14);
        bmul.setOnClickListener(this);
        Button bdiv = (Button) findViewById(R.id.button15);
        bdiv.setOnClickListener(this);
        Button bequ = (Button) findViewById(R.id.button11);
        bequ.setOnClickListener(this);

    }

    @Override
    public void onClick(View v) {
        EditText ed = (EditText) findViewById(R.id.editText1);
        if (v.getId() == R.id.button0) {

            ed.append("0");
            calc(0, v, ed);
        }
        if (v.getId() == R.id.button1) {

            ed.append("1");
        }
        if (v.getId() == R.id.button2) {

            ed.append("2");
        }
        if (v.getId() == R.id.button3) {

            ed.append("3");
        }
        if (v.getId() == R.id.button4) {

            ed.append("4");
        }
        if (v.getId() == R.id.button5) {

            ed.append("5");
        }
        if (v.getId() == R.id.button6) {

            ed.append("6");
        }
        if (v.getId() == R.id.button7) {

            ed.append("7");
        }
        if (v.getId() == R.id.button8) {

            ed.append("8");
        }
        if (v.getId() == R.id.button9) {

            ed.append("9");
        }

    }

    public void harsha(View v1) {
        if (v1.getId() == R.id.imageButton1) {
            Toast obj = Toast.makeText(this, "Hey Don't touch me",
                    Toast.LENGTH_SHORT);
            obj.show();
        }

    }

    private void calc(int x, View Y, EditText ed1) {
        if (Y.getId() == R.id.button12) {
            ed1.setText("");
            int d = Integer.parseInt(ed1.getText().toString());
            ed1.setText("");
            int h = x + d;
            ed1.setText(h);
        }
    }
}

2 个答案:

答案 0 :(得分:1)

嗯,它不起作用,因为你没有执行任何东西。

在onClick(查看v):

if (v.getId() == R.id.button0) {
    ed.append("0");
    calc(0, v, ed);
}

只有在视图的ID为' button0'

的ID时才会发生这种情况

现在,当您查看calc(int x,View Y,EditText ed1)时:

if (Y.getId() == R.id.button12) {
    ed1.setText("");
    int d = Integer.parseInt(ed1.getText().toString());
    ed1.setText("");
    int h = x + d;
    ed1.setText(h);
}

只有在视图的ID为' button12'

的ID时才会发生这种情况

我不确定你想要它做什么,但如果你想要执行代码只是改变:

if (Y.getId() == R.id.button12)

if (Y.getId() == R.id.button0)

答案 1 :(得分:0)

我不清楚您的计算问题,但您可以试试这个,如果您的问题没有显示结果:

 private void calc(int x, View Y, EditText ed1) {
    if (Y.getId() == R.id.button12) {
        ed1.setText("");
        int d = Integer.parseInt(ed1.getText().toString());
        ed1.setText("");// It is useless duplicate of line
        int h = x + d;
        ed1.setText(""+h); //It is easiest way to parse int to a string
    }
}