Search code examples
javaandroidandroid-edittextandroid-button

Android EditText - Delete the last letter with a button


I have to buttons that writes A and B to an edittext. If there is something in the edittext how can I delete the last letters with the "Del" button? My layout:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity" >

<Button
    android:id="@+id/buttonb"
    android:layout_width="100dp"
    android:layout_height="100dp"
    android:layout_alignParentLeft="true"
    android:layout_below="@+id/buttona"
    android:text="@string/buttonb"
    android:textSize="50sp"
    android:textStyle="bold" />

<Button
    android:id="@+id/buttona"
    android:layout_width="100dp"
    android:layout_height="100dp"
    android:layout_alignParentLeft="true"
    android:layout_centerVertical="true"
    android:text="@string/buttona"
    android:textSize="50sp"
    android:textStyle="bold" />

<Button
    android:id="@+id/buttondel"
    android:layout_width="100dp"
    android:layout_height="100dp"
    android:layout_alignParentRight="true"
    android:layout_centerVertical="true"
    android:text="@string/buttondel"
    android:textSize="50sp"
    android:textStyle="bold" />

<EditText
    android:id="@+id/editText"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_alignParentTop="true"
    android:ems="58"
    android:textSize="20sp"
    android:textStyle="bold"
    android:inputType="text" >

    <requestFocus />
</EditText>

</RelativeLayout>

And my java:

package com.koostamas.keyboard;

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

public class MainActivity extends Activity implements OnClickListener {

Button buttona, buttonb;
EditText editText;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
editText = (EditText) findViewById(R.id.editText);

addListenerOnButton();
}


   public void addListenerOnButton() {

buttona = (Button) findViewById(R.id.buttona);
buttona.setOnClickListener(this);
buttona.getText();
buttonb = (Button) findViewById(R.id.buttonb);
buttonb.setOnClickListener(this);
buttonb.getText();

   }

public void onClick(View v) {

    Button buttona = (Button)v;
    editText.setText(editText.getText().toString()+buttona.getText().toString());


}

public void onClick1(View v) {

    Button buttonb = (Button)v;
    editText.setText(editText.getText().toString()+buttonb.getText().toString());


}
}

So I want to make it. Please help me! Thanks in advance.


Solution

  • Yes you can create an onClickListener and just get the text from edit text and delete the last character.

    Button delete = (Button) findViewById(R.id.buttondel);
    if( delete != null ) {
       delete.setOnClickListener(new OnClickListener() {
          @Override
          public void onClick() {
             String textString = editText.getText().toString();
             if( textString.length() > 0 ) {
                editText.setText(textString.substring(0, textString.length() - 1 ));
                editText.setSelection(editText.getText().length());//position cursor at the end of the line
             }
          }
       });
    }
    

    Edit: Also don't forget to check the string length is greater than 0 before doing this in the event a or b hasn't been pressed when the user hits delete.