【问题标题】:How to delete the last letter from EditText with button? [duplicate]如何使用按钮从 EditText 中删除最后一个字母? [复制]
【发布时间】:2014-04-14 12:34:39
【问题描述】:

我必须将 A 和 B 写入编辑文本的按钮。如果edittext中有内容,如何使用“Del”按钮删除最后一个字母?

我的布局:

<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>

还有我的 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, buttondel;
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);

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


   }

public void onClick(View v) {
switch(v.getId()) {
    case R.id.buttona : 
        Button buttona = (Button)v;
    editText.setText(editText.getText().toString()+buttona.getText().toString());
        break;
    case R.id.buttondel :
        String text = editText.getText().toString();
        editText.setText(text.substring(0, text.length() - 1));
        break;



}

}


}

我该怎么做?提前感谢客栈。

【问题讨论】:

  • 不要多次问同样的问题。尤其是不在同一天。
  • 抱歉,我没有得到可用于前一个问题的答案。
  • 您得到了几个答案,其中很多都是正确的。这里的答案完全相同。
  • 好的,但我不是 android 专家,也不知道如何使用它们。

标签: java android android-edittext android-button


【解决方案1】:

您可以检索EditText 的文本,然后获取该文本的sub-string 并再次将该文本设置为EditText,如下所示...

String text = editText.getText().toString();
editText.setText(text.substring(0, text.length() - 1));

你也可以使用下面的过程....这样会更有效率。

int length = editText.getText().length();
if (length > 0) {
    editText.getText().delete(length - 1, length);
}

您应该如下使用switch-case...并按如下方式处理您的nuttondel onclick()...

public class MainActivity extends Activity implements OnClickListener {

    Button buttona, buttonb;
    Button buttonDel;
    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);

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

    buttonDel = (Button) findViewById(R.id.buttondel);
    buttonDel.setOnClickListener(this);


   }

    public void onClick(View v) {

       switch(v.getId()) {

          case R.id.buttona:
                      editText.setText(editText.getText().toString()+buttona.getText().toString());
              break;

          case R.id.buttonb:
                      editText.setText(editText.getText().toString()+buttonb.getText().toString());
              break;

          case R.id.buttondel:

              int length = editText.getText().length();
              if (length > 0) {
                  editText.getText().delete(length - 1, length);
              }
              break;
       }

    }

}

【讨论】:

  • 第三行的str变量是什么?
  • @user2923589...查看我的更新答案...我认为这个答案会对您有很大帮助。
  • 谢谢大家。它有效。
  • 一个有效的方法是int length = editText.getText().length();if (length &gt; 0) {editText.getText().delete(length - 1, length);}
  • 我使用高效的方式只是因为光标放置在正确的位置
【解决方案2】:

使用 substring() 方法,你可以做到,

String str = myEditText.getText().toString();
str = str.substring ( 0, str.length() - 1 );
// Now set this Text to your edit text
myEditText.setText ( str );

您需要在 onClick() 方法中编写以上行。

【讨论】:

  • 但是我应该把它放在哪里呢?你能把它写到代码中吗?谢谢。
  • 请告诉我,哪个是你的删除按钮?
  • 请看我的更新。
  • 好,你做对了。
  • 谢谢大家。它有效。
【解决方案3】:
str=edittext.gettext+"";
str.length();

然后for循环 或str1 = str.substring ( 0, str.length() - 1 );

【讨论】:

  • 但是我应该把它放在哪里呢?你能把它写到代码中吗?谢谢。
  • 在按钮上单击你想要na?然后把它放在按钮点击事件上......这将删除最后一个字符
  • 我做不到。它什么都不做。
  • 然后再次 settext(str1)
  • 谢谢大家。它有效。
猜你喜欢
  • 2014-04-14
  • 2019-11-22
  • 2017-06-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多