2012-09-28 7 views
5

Mam krótkie pytanie.Usuń ostatnią postać edittext

Mam ekran z pewnymi liczbami, gdy klikniesz jedną z liczb, liczba zostanie dodana na końcu editekstu.

input.append(number); 

Mam również przycisk, kiedy użytkownik kliknie ten przycisk Chcę usunąć ostatni znak.

Obecnie mam następujący:

Editable currentText = input.getText(); 

if (currentText.length() > 0) { 
    currentText.delete(currentText.length() - 1, 
      currentText.length()); 
    input.setText(currentText); 
} 

Czy istnieje łatwiejszy sposób to zrobić? Coś w linii input.remove()?

+1

chciałbym wstrzyknąć keyEvent z del klucza wewnątrz – njzk2

Odpowiedz

10

Zdaję sobie sprawę, że jest to stare pytanie, ale to jest nadal aktualne. Jeśli przyciąć tekst samodzielnie, kursor zostanie zresetowany do początku po ustawieniuTekst(). Więc zamiast (jak wspomniano przez njzk2), wysłać fałszywy usuwać klucza zdarzenie i niech platforma obsługiwać go dla Ciebie ...

//get a reference to both your backButton and editText field 

EditText editText = (EditText) layout.findViewById(R.id.text); 
ImageButton backButton = (ImageButton) layout.findViewById(R.id.back_button); 

//then get a BaseInputConnection associated with the editText field 

BaseInputConnection textFieldInputConnection = new BaseInputConnection(editText, true); 

//then in the onClick listener for the backButton, send the fake delete key 

backButton.setOnClickListener(new OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     textFieldInputConnection.sendKeyEvent(new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_DEL)); 
    } 
}); 
+2

Dobre podejście i działa! Jedna rzecz, którą należy zauważyć, kod * symuluje tylko * naciśnięcie klawisza "Usuń". Aby usunięcie działało, "EditText" musi mieć fokus. Możesz sprawdzić używając 'editText.isFocused()' i użyć 'editText.requestFocus()', aby ustawić ostrość. Ustawi także kursor na końcu, więc usunie ostatni znak. –

8

to wypróbować,

String str = yourEditText.getText().toString().trim(); 


    if(str.length()!=0){ 
    str = str.substring(0, str.length() - 1); 

    yourEditText.setText (str); 
} 
+3

Nie jest to prostsze i nie sprawdź granice. – njzk2

+0

Ustawia kursor na początku tekstu edycji, co nie jest idealne –