Girildiğinde Metni Düzenle'deki metni temizle


94

Edittext öğesine tıkladığımda mevcut içeriğini silecek şekilde onclicklistener ayarlamaya ve onclicklistener oluşturmaya çalışıyorum. Burada bir sorun mu var? Bu kodu derlediğimde zorla çıkıyorum ve ActivityManager: DDM öbeği 4d505251 gönderemiyorum: işleyici tanımlı hata yok.

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);Buradaki bu satır, onCreate yönteminin içine yerleştirilmelidir. Bağlam tarafından bir işlev çağrısıdır.
Some Noob Student

1
EditText'i Taşı editText = (EditText) findViewById (R.id.editText1); setContentView (R.layout.main) sonrasında;
Diego Torres Milano

findViewByIdAramadan sonra kullanamazsınız setContentView.
Ted Hopp

2
Evet! önce setContentView (id) öğesini çağırmanız gerekir. Sistemin ekran içeriklerini görüntüleyebilmesi için ve ardından ekran içeriğinizde muhtemelen bulunacak olan EditText'i işaret edersiniz. Aksi takdirde, Kapatmaya Zorla iletişim kutusunda bir istisna gösterecektir.
Adil Soomro

2
Bir "ipucu" ayarlayabileceğinize dikkat edin; bu, EditTextboş olduğunda bir metin görüntülemesini sağlar ve kullanıcı yazmaya başladığında kaybolur. Xml android:hint="your hint text here"dosyanıza ekleyin EditText. EditText'in ne için yapıldığını belirtmek için genellikle bir 'ipucu' kullanılır. Belki aradığınız şey bu olmayabilir, ancak aynı zamanda EditText"ipucunun" gerçekten aradığımı yaptığını keşfedene kadar tıklamayı da temizlemeye çalışıyordum .
Jecimi

Yanıtlar:


136

Önce, setContentView(R.layout.main)sonra diğer tüm başlatmaları aramanız gerekir .

Lütfen aşağıdaki Kodu deneyin.

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
Merhaba, bunun eski bir cevap olduğunu biliyorum ama her iki seçenekten de ( .clearveya .setText("")) bahseden tek kişi sensin . Herhangi bir fark var mı? Hangisini ne zaman kullanmalıyım yoksa tamamen aynı mı? Teşekkürler.
Alex

editText.getText (). clear (); android studio 3.5.1'de mr için çalışmadı
Abdul Wahid

188

Ayrıca aşağıdaki kodu da kullanabilirsiniz

editText.getText().clear();

Programlı bir şekilde yapmak isterseniz bu harika.
John Smith

2
Ali, kesinlikle haklısın. Ama önce getText () yöntemini çağırıyoruz. Clear () yöntemine sahip olan Düzenlenebilir örneğini bize döndürür;
Serhii Nadolynskyi

42

sadece android:hintEditText'inizdeki niteliği kullanın . Bu metin, kutu boş olduğunda ve odaklanmadığında görünür, ancak Metni Düzenle kutusu seçildiğinde kaybolur.


bu, basitlik için +1, kabul edilen cevap olmalıdır.
John Smith

Tasarım açısından doğru cevap bu! Teşekkürler
kyxap

11

EditText verilerini iki şekilde temizleyebiliriz

İlk Bir ayar EditText aşağıdaki satırdaki gibi boştur

editext.setText("");

İkincisi EditText verilerini bunun gibi temizliyor

editText.getText().clear();

İkinci yolu öneririm


7

Kodunuz şöyle olmalıdır:

    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

EditText değerlerini temizlemek çok basit. Düğmesine tıkladığınızda yalnızca 1 satır kodunu izleyin.

İçerideki düğme veya istediğiniz herhangi bir yerde, yalnızca bunu kullanın

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

            }
        });
    }


}

Kodunuzun tamamını göndermeyin, kolayca anlamalarına yardımcı olması için gerekli çözümü sağlayın
Digvesh Patel

3

Yukarıdaki çözümleri uygularken ne gibi hatalar yaptığımı bilmiyorum, ancak benim için başarısız oldular

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

Bu benim için çalışıyor


2

// Temizle Düğmesi Tıklandığında temizlemek için

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

Bu, yazdığınız yanlış anahtar kelimeleri silmenize yardımcı olacaktır, böylece geri tuşuna tekrar tekrar basmak yerine, her şeyi temizlemek için düğmeye tıklamanız yeterlidir. Umarım yardımcı olur


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

Boş dize ayarlayarak edittext dosyanızı temizleyebilirsiniz

    editext.setText("");

1

XML'de şöyle yazabilirsiniz:

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

ve java sınıfında aşağıdakilerden birine sahip olabilirsiniz:

    EditText searchHost;

OnCreate () yazarsınız:

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

Benim için iyi çalışıyor.


1

Kotlin için:

Biri EditText ve biri TextView için olmak üzere iki uzantı oluşturun

Metni düzenle:

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

Metin görünümü:

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

ve gibi kullan

myEditText.clear()

myTextView.clear()

0

EditText'inizdeki 'android: hint' özelliğini koddan da kullanabilirsiniz:

editText.setHint(CharSequence hint / int resid);

O zaman onClickListener veya benzeri bir şeye ihtiyacınız olmaz. Ancak ipucu değerinin geçilmeyeceğini unutmayın. EditText boş kalacaktır. Bu durumda, editText'inizi varsayılan değerinizle ayarlayabilirsiniz:

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

0

EditText kullanımı zorunlu değilse, bu davranışı yeni malzeme bileşenleri ile kolayca uygulayabilirsiniz:

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

Yalnızca metni temizleyecek düğme için istediğiniz çekilebilirliği ve yürüteceği eylemi belirtmeniz gerekir. Metni temizlemek için iconMode = "clear_text" kullanabilirsiniz, ancak "password_toggle" da mevcuttur.


0

O kadar basit: Widget değişkenleri (beyan editText, textView, buttonsınıfta vs.) ama bunu başlatmak onCreatesonrasetContentView .

Sorun, bir mizanpajın bir widget'ına erişmeye çalıştığınızda, önce mizanpajı bildirmeniz gerektiğidir. Düzeni bildirmek setContentView. Ve aracılığıyla Widget değişkeni başlatmak zaman findViewByIdsen erişen idana düzende widgetsetContentView .

Umarım alırsın!


-1

Bunu aradığından emin değilim

    {
    <EditText
     .
     . 
     android:hint="Please enter your name here">
    }
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.