Sean
Sean

Reputation: 179

How to display numbers onto a textview clicked by user?

I created a calculator but I cannot display the numbers onto the TextView like every iphone/android calculator.

For example, if the user clicks 5 + 5. I want 5 + 5 to display on the textview and once you hit equals it displays 10. I've tried different ways to figure this out but I keep getting errors.

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;
        }
    }
});

Upvotes: 0

Views: 95

Answers (3)

user5282947
user5282947

Reputation:

Just a reference since you created multiple onClick listeners which is highly repetitive in your code. I'd recommend taking a look at at Android: Use a SWITCH statement with setOnClickListener/onClick for more than 1 button? This would allow you to set a switch case for multiple buttons without making multiple onClickListeners. Good luck with your calculator!

Upvotes: 0

IntelliJ Amiya
IntelliJ Amiya

Reputation: 75788

NumberFormatException is an Exception that might be thrown when you try to convert a String into a number, where that number might be an int , a float , or any other Java numeric type.

You can use NumberFormat and Double .

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

Hope this helps you .

Upvotes: 1

Nivedh
Nivedh

Reputation: 961

Can you please try and check whether it works

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

Upvotes: 0

Related Questions