Borrar texto en EditText cuando se ingresa


94

Estoy tratando de configurar y onclicklistener para que cuando haga clic dentro del elemento edittext borre su contenido actual. hay algo mal aqui? Cuando compilo este código, obtengo un cierre forzado y ActivityManager: No se puede enviar el fragmento DDM 4d505251: no hay un error definido por el controlador.

public class Project extends Activity implements OnClickListener {
    /** Called when the activity is first created. */
    EditText editText = (EditText)findViewById(R.id.editText1);
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);


        editText.setOnClickListener(this);

        setContentView(R.layout.main);

    }

    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
        editText.setText("");
    }
}

EditText editText = (EditText)findViewById(R.id.editText1);Esta línea aquí debe colocarse dentro del método onCreate. Es una llamada de función por el contexto.
Some Noob Student

1
Mover EditText editText = (EditText) findViewById (R.id.editText1); después de setContentView (R.layout.main);
Diego Torres Milano

No puede usar findViewByIdhasta después de haber llamado setContentView.
Ted Hopp

2
¡Sí! primero tienes que llamar a setContentView (id). Para que el sistema pueda mostrar el contenido de la pantalla, y luego señalar el EditText que probablemente existirá en el contenido de su pantalla. De lo contrario, mostrará una excepción con el cuadro de diálogo Forzar cierre.
Adil Soomro

2
Observe que puede establecer una "sugerencia" en an EditText, lo que hace que muestre un texto cuando esté vacío y que desaparezca cuando el usuario comience a escribir. Agregue android:hint="your hint text here"a su EditTexten xml. Por lo general, se usa una 'sugerencia' para indicar para qué está hecho EditText. Tal vez no sea lo que estás buscando, pero también estaba buscando borrar el EditTextclic hasta que descubrí que la "pista" hizo lo que realmente estaba buscando.
Jecimi

Respuestas:


136

Primero debe llamar y setContentView(R.layout.main)luego todas las demás inicializaciones.

Pruebe el siguiente código.

public class Trackfolio extends Activity implements OnClickListener {
    /** Called when the activity is first created. */
    public EditText editText;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.main);

        editText = (EditText) findViewById(R.id.editText1);
        editText.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
        editText.getText().clear(); //or you can use editText.setText("");
    }
}

6
Hola, sé que esta es una respuesta antigua, pero eres el único que menciona ambas opciones ( .clearo .setText("")). ¿Hay alguna diferencia? ¿Cuándo debo usar cuál o son completamente iguales? Gracias.
Alex

editText.getText (). clear (); no funcionó para mr en Android Studio 3.5.1
Abdul Wahid

188

También puede usar el código a continuación

editText.getText().clear();

Esto es genial si desea hacerlo programáticamente.
John Smith

2
Ali, tienes toda la razón. Pero llamamos al método getText () primero. Nos devuelve una instancia editable, que tiene el método clear ();
Serhii Nadolynskyi

42

simplemente use el android:hintatributo en su EditText. Este texto aparece cuando el cuadro está vacío y no enfocado, pero desaparece al seleccionar el cuadro Editar texto.


esta debería ser la respuesta aceptada, +1 por simplicidad.
John Smith

¡Esta es la respuesta correcta desde la perspectiva del diseño! Gracias
kyxap

11

Podemos borrar los datos de EditText de dos formas

La primera configuración EditText está vacía como la línea de abajo

editext.setText("");

En segundo lugar, borrando datos de EditText como este

editText.getText().clear();

Sugiero una segunda forma


7

Tu código debe ser:

    public class Project extends Activity implements OnClickListener {
            /** Called when the activity is first created. */
            EditText editText;
            @Override
            public void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);            

                setContentView(R.layout.main);
                editText = (EditText)findViewById(R.id.editText1);
                editText.setOnClickListener(this);            
            }

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub

                if(v == editText) {
                    editText.setText("");
                }
            }
        }

4
public EditText editField;
public Button clear = null;
@Override
public void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
    setContentView(R.layout.text_layout);
   this. editField = (EditText)findViewById(R.id.userName);
this.clear = (Button) findViewById(R.id.clear_button);  
this.editField.setOnClickListener(this);
this.clear.setOnClickListener(this);
@Override
public void onClick(View v) {

    // TODO Auto-generated method stub
if(v.getId()==R.id.clear_button){
//setText will remove all text that is written by someone
    editField.setText("");
    }
}

4

Muy simple para borrar los valores de editText. Cuando haga clic en el botón, solo siga el código de 1 línea.

Botón interior o en cualquier lugar que desee. Utilice únicamente este

editText.setText("");   

3
package com.example.sampleproject;

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

public class SampleProject extends Activity {
    EditText mSearchpeople;
    Button mCancel , msearchclose;
    ImageView mprofile, mContact, mcalender, mConnection, mGroup , mFollowup , msetting , mAddacard;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.dashboard);
        mSearchpeople = (EditText)findViewById(R.id.editText1);
        mCancel = (Button)findViewById(R.id.button2);
        msearchclose = (Button)findViewById(R.id.button1);
        mprofile = (ImageView)findViewById(R.id.imageView1);
        mContact = (ImageView)findViewById(R.id.imageView2);
        mcalender = (ImageView)findViewById(R.id.imageView3);
        mConnection = (ImageView)findViewById(R.id.imageView4);
        mGroup = (ImageView)findViewById(R.id.imageView5);
        mFollowup = (ImageView)findViewById(R.id.imageView6);
        msetting = (ImageView)findViewById(R.id.imageView7);
        mAddacard = (ImageView)findViewById(R.id.imageView8);
    }
    @Override
    protected void onResume() {
        // TODO Auto-generated method stub
        super.onResume();
        mCancel.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                mSearchpeople.clearFocus();

            }
        });
    }


}

No publicar su código entero PLZ proporcionar la solución necesaria para su op ayuda a comprender fácilmente
Digvesh Patel

3

No sé qué errores cometí al implementar las soluciones anteriores, pero no tuvieron éxito para mí

txtDeck.setOnFocusChangeListener(new OnFocusChangeListener() {
    @Override       
    public void onFocusChange(View v, boolean hasFocus) {
        txtDeck.setText("");
    }
});

Esto funciona para mi


2

// Para borrar cuando se hace clic en el botón Borrar

firstName = (EditText) findViewById (R.id.firstName);

    clear = (Button) findViewById(R.id.clearsearchSubmit);

    clear.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            if (v.getId() == R.id.clearsearchSubmit);
            firstName.setText("");
        }
    });

Esto ayudará a borrar las palabras clave incorrectas que ha escrito, por lo que en lugar de presionar la tecla de retroceso una y otra vez, simplemente puede hacer clic en el botón para borrar todo. Espero eso ayude


1
final EditText childItem = (EditText) convertView.findViewById(R.id.child_item);
childItem.setHint(cellData);

childItem.setOnFocusChangeListener(new View.OnFocusChangeListener() {
    @Override
    public void onFocusChange(View v, boolean hasFocus) {
        //Log.d("NNN", "Has focus " + hasFocus);
        if (hasFocus) {
            Toast.makeText(ctx.getApplicationContext(), "got the focus", Toast.LENGTH_LONG).show();
        } else {
            Toast.makeText(ctx.getApplicationContext(),
            "loss the focus", Toast.LENGTH_SHORT).show();
        }
        return;
    });

1

al configurar Cadena vacía puede borrar su texto de edición

    editext.setText("");

1

En XML puedes escribir como:

    <EditText
        android:id="@+id/txtsearch"
        android:layout_width="250dp"
        android:layout_height="match_parent"
        android:layout_gravity="right"
        android:layout_weight="1"
        android:background="@drawable/roundlayoutbutton1"
        android:ems="10"
        android:gravity="center"
        android:inputType="text"
        android:textAllCaps="true"
        android:text="search_xxxx"

        android:textColor="@color/colorPrimaryDark"
        android:visibility="visible" />

y en la clase java puede tener uno debajo:

    EditText searchHost;

OnCreate () escribe:

    searchHost=findViewById(R.id.txtsearch);

    searchHost.setOnFocusChangeListener(new View.OnFocusChangeListener() {
        @Override
        public void onFocusChange(View v, boolean hasFocus) {
            if(searchHost.getText().toString().equalsIgnoreCase("search_xxxx")){
                searchHost.setText("");
                Toast.makeText(getApplicationContext(),"Enter you text xxx...", Toast.LENGTH_LONG).show();
            }
        }
    });

Funciona bien para mí.


1

Para Kotlin:

Cree dos extensiones, una para EditText y otra para TextView

Editar texto:

fun EditText.clear() { text.clear() }

Vista de texto:

fun TextView.clear() { text = "" }

y úsalo como

myEditText.clear()

myTextView.clear()

0

Puede usar el atributo 'android: hint' en su EditText también desde el código:

editText.setHint(CharSequence hint / int resid);

Entonces no necesita ningún onClickListener o similar. Pero tenga en cuenta que el valor de la pista no se pasará. El editText permanecerá vacío. En este caso, puede configurar su editText con su valor deflault:

if(editText.getText().toString().equals("")) { 
...use your default value instead of the editText... }

0

Si el uso de EditText no es obligatorio, puede implementar este comportamiento fácilmente con los nuevos componentes de material:

<com.google.android.material.textfield.TextInputLayout
            style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox.Dense"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:hint="@string/hint_field"
            app:endIconDrawable="@drawable/ic_close_black_24dp"
            app:endIconMode="clear_text"
            app:endIconTint="@color/black">

            <com.google.android.material.textfield.TextInputEditText
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:hint="@string/hint_value"
                android:maxLines="1"
                android:text="@{itemModel.value}" />

        </com.google.android.material.textfield.TextInputLayout>

Solo tienes que especificar el dibujable que deseas para el botón que borrará el texto y la acción que ejecutará. Para borrar el texto, puede usar iconMode = "clear_text", pero también está disponible "password_toggle".


0

Es muy sencillo: declarar las variables de widgets ( editText, textView, buttonetc.) en la clase, pero inicializar en onCreatedespués setContentView.

El problema es que cuando intenta acceder a un widget de un diseño, primero debe declarar el diseño. Declarar el diseño es setContentView. Y cuando inicializa la variable del widget a través de findViewById, está accediendo al iddel widget en el diseño principal en setContentView.

¡Espero que lo obtengas!


-1

No estoy seguro de si estás buscando este

    {
    <EditText
     .
     . 
     android:hint="Please enter your name here">
    }
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.