2012-03-07 84 views
1

有人知道如何制作一个按钮,一次删除EditText中的一个字符?使用按钮删除EditText中的文本

我想这是一个跛脚尝试真正以下,因为我不知道该怎么做:

public void onClick(View v) { 
    // TODO Auto-generated method stub 
    switch (v.getId()) { 
    case R.id.keypad_0: 
     edittext.setText(edittext.getText() + "0"); 
     break; 
    case R.id.keypad_1: 
     edittext.setText(edittext.getText() + "1"); 
     break; 
    case R.id.keypad_2: 
     edittext.setText(edittext.getText() + "2"); 
     break; 
    case R.id.keypad_3: 
     edittext.setText(edittext.getText() + "3"); 
     break; 
    case R.id.keypad_4: 
     edittext.setText(edittext.getText() + "4"); 
     break; 
    case R.id.keypad_5: 
     edittext.setText(edittext.getText() + "5"); 
     break; 
    case R.id.keypad_6: 
     edittext.setText(edittext.getText() + "6"); 
     break; 
    case R.id.keypad_7: 
     edittext.setText(edittext.getText() + "7"); 
     break; 
    case R.id.keypad_8: 
     edittext.setText(edittext.getText() + "8"); 
     break; 
    case R.id.keypad_9: 
     edittext.setText(edittext.getText() + "9"); 
     break; 
    case R.id.keypad_minus: 
     edittext.setText(edittext.getText() + "-"); 
     break; 
    case R.id.keypad_del: 
     edittext.setText(edittext.getText().length() - 1); //attempt here 
     break; 

如果有人知道请分享

+0

INT长度= edittext.getText()的toString()长度(); edittext.setText(edittext.getText()的ToString()子串(0,。。长度-1)); – 2012-03-07 17:49:17

+0

谢谢萨米尔,那有效。你能解释为什么吗?我不明白为什么你需要一个子字符串来做到这一点 – a7omiton 2012-03-07 17:55:57

+1

我想我无论如何都理解,子字符串从文本的开始处开始,长度表示2 - 1 = 1。:P谢谢 – a7omiton 2012-03-07 18:04:35

回答

2

如果你只是想删除最后一个字符,则子方法将很好地做:

edittext.getText().toString().substring(0, edittext.getText().toString().length()-1); 

上面代码返回索引0的子字符串-1的长度。 。

+0

它必须是 - 2 ,不是吗?长度为1。 – Moritz 2012-03-07 17:50:42

+0

这对我不起作用,说不能将字符串转换为可编辑,或反之亦然。虽然如此,萨米尔的回答很有魅力。无论如何感谢劳伦斯。 – a7omiton 2012-03-07 17:55:00

+0

查看子字符串的文档,上面的代码将生成请求的输出。 http://docs.oracle.com/javase/1.4.2/docs/api/java/lang/String.html#substring(int,int) – Ljdawson 2012-03-07 17:56:00

2

另一变型:

edittext.setText(edittext.getText().delete(edittext.length() - 1, edittext.length())); 
+0

这是为我工作的解决方案,而不是另一个,谢谢。 – Jack 2015-05-29 10:43:20