sumr
sumr

Reputation: 25

What is the best way to delete the last digit in a calculator app

package com.gamesup.braingame;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;

public class Easy extends Activity {

EditText display;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.easy);
    display = (EditText)findViewById(R.id.displayText);
    display.setText("?");

}

static boolean isEmpty = true;

public void num_Clicked(View v){
    Button btn = (Button) findViewById(v.getId());
    //getting the button object and using a view to get the id of the buttons

    if(isEmpty){
        display.setText(btn.getText());
        isEmpty = false;
    }
    else{
        display.append(btn.getText().toString()); 
    }

    if (v.getId()== R.id.del_button){
        String s = display.getText().toString();
        s = s.substring(0, s.length() - 1);
        display.setText(s);

    }


}



}

This is my code for the digits to be displayed on a calculator android app. What would i have to use to delete the last digit displayed? Also would i do this inside the num_Clicked function, like this:

if (v.getId()== R.id.del_button) {

}

This is my xml code:

<?xml version="1.0" encoding="utf-8"?>
     <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
      android:layout_width="match_parent"
      android:layout_height="match_parent"
      android:orientation="vertical" >
 <TableLayout
    android:id="@+id/tableLayout1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerHorizontal="true"
    android:layout_centerVertical="true" >

<TableRow
        android:id="@+id/tableRow1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" >

 <Button
            android:id="@+id/number1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:onClick="num_Clicked"
            android:text="@string/number_1_label" />

<Button
            android:id="@+id/number2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:onClick="num_Clicked"
            android:text="@string/number_2_label" />

 <Button
            android:id="@+id/number3"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:onClick="num_Clicked"
            android:text="@string/number_3_label" />

</TableRow>

<TableRow
        android:id="@+id/tableRow2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" >

<Button
            android:id="@+id/number4"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:onClick="num_Clicked"
            android:text="@string/number_4_label" />

<Button
            android:id="@+id/number5"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:onClick="num_Clicked"
            android:text="@string/number_5_label" />

<Button
            android:id="@+id/number6"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:onClick="num_Clicked"
            android:text="@string/number_6_label" />

</TableRow>

<TableRow
        android:id="@+id/tableRow3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" >


<Button
            android:id="@+id/number7"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:onClick="num_Clicked"
            android:text="@string/number_7_label" />


<Button
            android:id="@+id/number8"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:onClick="num_Clicked"
            android:text="@string/number_8_label" />


 <Button
            android:id="@+id/number9"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:onClick="num_Clicked"
            android:text="@string/number_9_label" />


</TableRow>


 <TableRow
        android:id="@+id/tableRow4"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" >

<Button
            android:id="@+id/del_button"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:onClick="num_Clicked"
            android:text="@string/delete_label" />

<Button
            android:id="@+id/number0"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:onClick="num_Clicked"
            android:text="@string/number_0_label" />


<Button
            android:id="@+id/hash_button"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:onClick="num_Clicked"
            android:text="@string/hash_label" />

<Button
            android:id="@+id/minus_button"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:onClick="num_Clicked"
            android:text="@string/minus_label" />

</TableRow>


</TableLayout>

<EditText
    android:id="@+id/displayText"
    android:layout_width="wrap_content"
    android:layout_height="50dp"
    android:layout_above="@+id/tableLayout1"
    android:layout_alignLeft="@+id/tableLayout1"
    android:layout_alignRight="@+id/tableLayout1"
    android:ems="10"
    android:inputType="number" />

</RelativeLayout>

Upvotes: 0

Views: 3850

Answers (1)

daentech
daentech

Reputation: 1115

You can remove the last character in a string by using the substring method.

In the method where the delete press is being captured:

String s = display.getText().toString();
s = s.substring(0, s.length() - 1);
display.setText(s);

This will replace the string s with the last character removed

The full code to do this would be:

package com.gamesup.braingame;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;

public class Easy extends Activity {

    EditText display;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.easy);
        display = (EditText)findViewById(R.id.displayText);
        display.setText("?");

    }

    static boolean isEmpty = true;

    public void num_Clicked(View v){
        Button btn = (Button) v;

        if (v.getId()== R.id.del_button){
            String s = display.getText().toString();
            s = s.substring(0, s.length() - 1);
            display.setText(s);
            return;
        }

        if(isEmpty){
            display.setText(btn.getText());
            isEmpty = false;
        }
        else{
            display.append(btn.getText().toString()); 
        }
    }
}

Upvotes: 2

Related Questions