Próbuję ustawić i onclicklistener, aby po kliknięciu elementu edittext wyczyścił jego aktualną zawartość. Coś tu jest nie tak? Kiedy kompiluję ten kod, otrzymuję wymuszone zamknięcie i ActivityManager: Nie można wysłać fragmentu DDM 4d505251: brak zdefiniowanego błędu obsługi.
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("");
}
}
android
android-edittext
locoboy
źródło
źródło
EditText editText = (EditText)findViewById(R.id.editText1);
Ta linia powinna być umieszczona wewnątrz metody onCreate. Jest to wywołanie funkcji przez kontekst.findViewById
dopóki nie zadzwoniszsetContentView
.EditText
, co powoduje, że wyświetla tekst, gdy jest pusty, i który znika, gdy użytkownik zaczyna pisać. Dodajandroid:hint="your hint text here"
do swojegoEditText
w xml. „Podpowiedź” jest zwykle używana do wskazania, do czego służy EditText. Może nie jest to to, czego szukasz, ale chciałem też usunąćEditText
kliknięcie, dopóki nie odkryłem, że „wskazówka” zrobiła to, czego naprawdę szukałem.Odpowiedzi:
Najpierw musisz wywołać
setContentView(R.layout.main)
wszystkie inne inicjalizacje.Spróbuj poniżej kodu.
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(""); } }
źródło
.clear
lub.setText("")
). Czy są jakieś różnice? Kiedy należy użyć którego z nich, czy są one całkowicie takie same? Dzięki.Możesz również użyć kodu poniżej
editText.getText().clear();
źródło
po prostu użyj
android:hint
atrybutu w swoim EditText. Ten tekst pojawia się, gdy pole jest puste i nie jest zaznaczone, ale znika po wybraniu pola EditText.źródło
Możemy wyczyścić dane EditText na dwa sposoby
Pierwsze ustawienie EditText jest puste jak poniżej
editext.setText("");
Drugi czyści dane EditText w ten sposób
editText.getText().clear();
Proponuję drugi sposób
źródło
Twój kod powinien być:
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(""); } } }
źródło
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(""); } }
źródło
Bardzo proste, aby wyczyścić wartości editText. Po kliknięciu przycisku, a następnie wykonaj tylko 1 wiersz kodu.
editText.setText("");
źródło
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(); } }); } }
źródło
nie wiem, jakie błędy popełniłem przy wdrażaniu powyższych rozwiązań, ale mi się nie udało
txtDeck.setOnFocusChangeListener(new OnFocusChangeListener() { @Override public void onFocusChange(View v, boolean hasFocus) { txtDeck.setText(""); } });
To działa dla mnie,
źródło
// Aby wyczyścić po kliknięciu przycisku Wyczyść
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(""); } });
Pomoże to usunąć niewłaściwe słowa kluczowe, które wpisałeś, więc zamiast raz po raz naciskać klawisz Backspace, możesz po prostu kliknąć przycisk, aby wyczyścić wszystko. Mam nadzieję, że to pomoże
źródło
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; });
źródło
ustawiając pusty ciąg, możesz wyczyścić edittext
editext.setText("");
źródło
W XML możesz pisać tak:
<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" />
aw klasie java możesz mieć poniżej jedną:
EditText searchHost;
OnCreate () piszesz:
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(); } } });
U mnie działa dobrze.
źródło
Kotlin:
Utwórz dwa rozszerzenia, jedno dla EditText i jedno dla TextView
Edytować tekst:
fun EditText.clear() { text.clear() }
Widok tekstu:
fun TextView.clear() { text = "" }
i używaj go jak
myEditText.clear() myTextView.clear()
źródło
Możesz użyć atrybutu „android: hint” w swoim EditText również z kodu:
editText.setHint(CharSequence hint / int resid);
Wtedy nie potrzebujesz żadnego onClickListener ani podobnego. Ale pamiętaj, że wartość podpowiedzi nie zostanie przekazana. EditText pozostanie pusty. W takim przypadku możesz ustawić swój editText za pomocą wartości deflault:
if(editText.getText().toString().equals("")) { ...use your default value instead of the editText... }
źródło
Jeśli użycie EditText nie jest obowiązkowe, możesz łatwo zaimplementować to zachowanie dzięki nowym komponentom materiału:
<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>
Musisz tylko określić, jaki element rysowania chcesz dla przycisku, który wyczyści tekst i akcję, którą wykona. Aby wyczyścić tekst, możesz użyć iconMode = "clear_text", ale dostępne jest również "password_toggle".
źródło
To proste: deklarować zmienne widgetów (
editText
,textView
,button
itd) w klasie ale zainicjować to wonCreate
posetContentView
.Problem polega na tym, że kiedy próbujesz uzyskać dostęp do widżetu układu, musisz najpierw zadeklarować układ. Deklarowanie układu to
setContentView
. A kiedy zainicjujesz zmienną widgetu za pośrednictwemfindViewById
, uzyskujesz dostępid
do widgetu w głównym układzie wsetContentView
.Mam nadzieję, że to rozumiesz!
źródło
Nie jestem pewien, czy szukasz tego
{ <EditText . . android:hint="Please enter your name here"> }
źródło