Hapus teks di EditText saat dimasukkan

94

Saya mencoba untuk mengatur dan onclicklistener sehingga ketika saya mengklik di dalam elemen edittext itu akan menghapus isinya saat ini. Apa ada yang salah disini? Ketika saya mengkompilasi kode ini saya mendapatkan kekuatan berhenti dan ActivityManager: Tidak dapat mengirimkan potongan DDM 4d505251: tidak ada kesalahan yang ditentukan penangan.

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("");
    }
}
lokomotif
sumber
EditText editText = (EditText)findViewById(R.id.editText1);Baris ini di sini harus ditempatkan di dalam metode onCreate. Ini adalah panggilan fungsi menurut konteksnya.
Some Noob Student
1
Pindah EditText editText = (EditText) findViewById (R.id.editText1); setelah setContentView (R.layout.main);
Diego Torres Milano
Anda tidak dapat menggunakan findViewByIdsampai setelah Anda menelepon setContentView.
Ted Hopp
2
Ya! Anda harus memanggil setContentView (id) terlebih dahulu. Sehingga sistem dapat menampilkan konten layar, dan kemudian Anda menunjukkan EditText yang mungkin akan ada di konten layar Anda. Jika tidak, itu akan menampilkan pengecualian dengan dialog Tutup Paksa.
Adil Soomro
2
Perhatikan bahwa Anda dapat menyetel "petunjuk" ke sebuah EditText, yang membuatnya menampilkan teks saat kosong dan yang menghilang saat pengguna mulai mengetik. Tambahkan android:hint="your hint text here"ke EditTextdalam xml Anda. Sebuah 'petunjuk' biasanya digunakan untuk menunjukkan untuk apa EditText dibuat. Ini mungkin bukan yang Anda cari, tetapi saya juga ingin menghapus saat EditTextdiklik sampai saya menemukan bahwa "petunjuk" melakukan apa yang sebenarnya saya cari.
Jecimi

Jawaban:

136

Pertama, Anda perlu memanggil setContentView(R.layout.main)lalu semua inisialisasi lainnya.

Silakan coba di bawah Kode.

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("");
    }
}
Chirag
sumber
6
Hai, saya tahu ini adalah jawaban lama tetapi Anda satu-satunya yang menyebutkan kedua opsi ( .clearatau .setText("")). Apakah ada perbedaan? Kapan saya harus menggunakan yang mana atau apakah mereka benar-benar sama? Terima kasih.
Alex
editText.getText (). clear (); tidak bekerja untuk mr di android studio 3.5.1
Abdul Wahid
188

Anda juga dapat menggunakan kode di bawah ini

editText.getText().clear();
Serhii Nadolynskyi
sumber
Ini bagus jika Anda ingin melakukannya secara terprogram.
John Smith
2
Ali, Anda benar sekali. Tapi kita memanggil metode getText () terlebih dahulu. Ia mengembalikan kita contoh yang dapat diedit, yang memiliki metode clear ();
Serhii Nadolynskyi
42

cukup gunakan android:hintatribut di EditText Anda. Teks ini muncul saat kotak kosong dan tidak fokus, tetapi menghilang saat memilih kotak EditText.

pengguna2088464
sumber
ini harus menjadi jawaban yang diterima, +1 untuk kesederhanaan.
John Smith
Ini jawaban yang benar dari perspektif desain! Terima kasih
kyxap
11

Kami dapat menghapus data EditText dengan dua cara

Pertama, pengaturan EditText kosong seperti baris di bawah ini

editext.setText("");

Kedua, membersihkan data EditText seperti ini

editText.getText().clear();

Saya menyarankan cara kedua

Venki WAR
sumber
7

Kode Anda harus:

    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("");
                }
            }
        }
Anju
sumber
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("");
    }
}
Faakhir
sumber
4

Sangat Sederhana untuk menghapus nilai editText. Ketika Anda mengklik tombol maka hanya mengikuti 1 kode baris.

Tombol di dalam atau di mana pun yang Anda inginkan. Gunakan ini saja

editText.setText("");   
Guru
sumber
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();

            }
        });
    }


}
Madhu
sumber
Tidak memposting seluruh kode Anda tlg berikan solusi yang diperlukan untuk op, itu membantu mereka untuk dengan mudah memahami
Digvesh Patel
3

saya tidak tahu kesalahan apa yang saya lakukan saat menerapkan solusi di atas, tetapi tidak berhasil bagi saya

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

Ini bekerja untuk saya,

pelaut
sumber
2

// Untuk menghapus Saat Tombol Hapus Diklik

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("");
        }
    });

Ini akan membantu untuk menghapus kata kunci yang salah yang telah Anda ketik jadi daripada menekan backspace lagi dan lagi Anda cukup mengklik tombol untuk menghapus semuanya. Semoga Membantu

ashim888
sumber
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;
    });
Nikhil
sumber
1

dengan menyetel Empty string Anda dapat menghapus teks editan Anda

    editext.setText("");
Sai Gopi Me
sumber
1

Dalam XML Anda bisa menulis seperti:

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

dan di kelas java Anda mungkin memiliki di bawah ini:

    EditText searchHost;

OnCreate () Anda menulis:

    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();
            }
        }
    });

Ini bekerja dengan baik untuk saya.

Ashok
sumber
1

Untuk Kotlin:

Buat dua ekstensi, satu untuk EditText dan satu lagi untuk TextView

EditText:

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

TextView:

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

dan menggunakannya seperti

myEditText.clear()

myTextView.clear()
MaK
sumber
0

Anda bisa menggunakan atribut 'android: hint' di EditText juga dari kode:

editText.setHint(CharSequence hint / int resid);

Maka Anda tidak memerlukan onClickListener atau yang serupa. Tetapi pertimbangkan bahwa nilai petunjuk tidak akan diteruskan. EditText akan tetap kosong. Dalam hal ini, Anda dapat mengatur editText Anda dengan nilai deflault Anda:

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

Jika penggunaan EditText tidak wajib, Anda dapat mengimplementasikan perilaku ini dengan mudah menggunakan komponen material baru:

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

Anda hanya perlu menentukan drawable yang Anda inginkan untuk tombol yang akan menghapus teks dan tindakan yang akan dijalankannya. Untuk menghapus teks, Anda dapat menggunakan iconMode = "clear_text", tetapi juga "password_toggle" tersedia.

Jesús Barrera
sumber
0

Itu sederhana: mendeklarasikan variabel widget ( editText, textView, buttondll) di kelas tapi menginisialisasi di onCreatesetelah setContentView.

Masalahnya adalah saat Anda mencoba mengakses widget tata letak terlebih dahulu, Anda harus mendeklarasikan tata letak tersebut. Mendeklarasikan tata letak adalah setContentView. Dan saat Anda menginisialisasi variabel widget melalui findViewByIdAnda mengakses idwidget di tata letak utama di setContentView.

Saya harap Anda mengerti!

Sacha
sumber
-1

Saya tidak yakin apakah Anda mencari yang ini

    {
    <EditText
     .
     . 
     android:hint="Please enter your name here">
    }
Mohamed Sajjadh
sumber