如何在用户点击的文本视图上显示数字?

时间:2016-11-10 05:40:21

标签: java android

我创建了一个计算器但我不能像{i} / android计算器那样在TextView上显示数字。

例如,如果用户点击5 + 5.我希望5 + 5显示在textview上,一旦你点击等于它显示10.我已经尝试了不同的方法来解决这个问题,但我一直在收到错误。< / p>

ClearBtn.setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View v) {
        TextView output = (TextView) findViewById(R.id.text_view);
        output.setText("");
    }
});

Button0.setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View v) {
       textView.setText(textView.getText() + "0");
    }
});

Button1.setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View v) {
        textView.setText(textView.getText() + "1");
    }
});

Button2.setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View v) {
        textView.setText(textView.getText() + "2");
    }
});

Button3.setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View v) {
        textView.setText(textView.getText() + "3");
    }
});

Button4.setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View v) {
        textView.setText(textView.getText() + "4");
    }
});

Button5.setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View v) {
        textView.setText(textView.getText() + "5");
    }
});

Button6.setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View v) {
        textView.setText(textView.getText() + "6");
    }
});

Button7.setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View v) {
        textView.setText(textView.getText() + "7");
    }
});

Button8.setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View v) {
        textView.setText(textView.getText() + "8");
    }
});

Button9.setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View v) {
        textView.setText(textView.getText() + "9");
    }
});

// Operation Buttons
addBtn.setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View v) {

        if(textView == null) {
            textView.setText(" ");

        } else {
            firstValue = Double.parseDouble(textView.getText() + " ");
            addition = true;
            textView.setText(null);
        }
    }
});

subBtn.setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View v) {

        firstValue = Double.parseDouble(textView.getText() + " ");
        subtract = true;
        textView.setText(null);
    }
});

divideBtn.setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View v) {

        firstValue = Double.parseDouble(textView.getText() + " ");
        divison = true;
        textView.setText(null);
    }
});

multiBtn.setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View v) {

        firstValue = Double.parseDouble(textView.getText() + " ");
        multiplication = true;
        textView.setText(null);
    }
});

equalBtn.setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View v) {

        secondValue = Double.parseDouble(textView.getText() + " ");

        if(addition == true) {
            textView.setText(firstValue + secondValue + " ");
            addition = false;
        }

        if(subtract == true) {
            textView.setText(firstValue - secondValue + " ");
            subtract = false;
        }

        if(divison == true) {
            textView.setText(firstValue / secondValue + " ");
            divison = false;
        }

        if(multiplication == true) {
            textView.setText(firstValue * secondValue + " ");
            multiplication = false;
        }
    }
});

3 个答案:

答案 0 :(得分:1)

  

NumberFormatException是一个可能在您抛出的异常   尝试将String转换为数字,其中该数字可能是一个数字   int,float或任何其他Java数字类型。

您可以使用 NumberFormat Double

Double result = new Double(textView.getText().toString());
NumberFormat nm = NumberFormat.getNumberInstance();
textview.setText(nm.format(result)+ "3");

希望这会对你有所帮助。

答案 1 :(得分:0)

请你试试看它是否有效

 firstValue = Double.parseDouble(textView.getText().toString().replaceAll(" ",""));

答案 2 :(得分:0)

只是一个引用,因为您创建了多个onClick侦听器,这些侦听器在您的代码中具有高度重复性。我建议你看一下Android: Use a SWITCH statement with setOnClickListener/onClick for more than 1 button?这样你就可以为多个按钮设置一个开关盒而不需要多个onClickListeners。祝你的计算器好运!