Я пытаюсь установить и onclicklistener, чтобы при щелчке внутри элемента edittext он очищал его текущее содержимое. Здесь что-то не так? Когда я компилирую этот код, я получаю принудительный выход и ActivityManager: Can't dispatch DDM chunk 4d505251: no handler defined error.
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
локобой
источник
источник
EditText editText = (EditText)findViewById(R.id.editText1);
Эта строка здесь должна быть помещена внутри метода onCreate. Это вызов функции из контекста.findViewById
пока не позвонитеsetContentView
.EditText
, которая заставляет отображать текст, когда он пуст, и который исчезает, когда пользователь начинает печатать. Добавьтеandroid:hint="your hint text here"
в свойEditText
в xml. «Подсказка» обычно используется, чтобы указать, для чего создан EditText. Возможно, это не то, что вы ищете, но я также хотел убратьEditText
щелчок, пока не обнаружил, что «подсказка» сделала то, что я действительно искал.Ответы:
Для начала нужно позвонить
setContentView(R.layout.main)
затем все остальные инициализации.Пожалуйста, попробуйте ниже Код.
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(""); } }
источник
.clear
или.setText("")
). Есть ли отличия? Когда я должен использовать какой из них или они полностью идентичны? Спасибо.Также вы можете использовать код ниже
editText.getText().clear();
источник
просто используйте
android:hint
атрибут в своем EditText. Этот текст отображается, когда поле пусто и не сфокусировано, но исчезает при выборе поля EditText.источник
Мы можем очистить данные EditText двумя способами
Первый параметр EditText пуст, как и строка ниже
editext.setText("");
Второй очищает данные EditText, подобные этому
editText.getText().clear();
Я предлагаю второй способ
источник
Ваш код должен быть:
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(""); } } }
источник
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(""); } }
источник
Очень просто очистить значения editText. Когда вы нажимаете кнопку, следуйте только 1 строчному коду.
editText.setText("");
источник
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(); } }); } }
источник
я не знаю, какие ошибки я сделал при реализации вышеуказанных решений, но они не увенчались успехом для меня
txtDeck.setOnFocusChangeListener(new OnFocusChangeListener() { @Override public void onFocusChange(View v, boolean hasFocus) { txtDeck.setText(""); } });
Это работает для меня,
источник
// Очистить при нажатии кнопки Очистить
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(""); } });
Это поможет удалить неправильные ключевые слова, которые вы ввели, поэтому вместо того, чтобы снова и снова нажимать клавишу возврата, вы можете просто щелкнуть кнопку, чтобы очистить все. Это сработало для меня. Надеюсь, это поможет
источник
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; });
источник
установив пустую строку, вы можете очистить текст редактирования
editext.setText("");
источник
В XML вы можете написать так:
<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" />
и в классе java у вас может быть ниже одного:
EditText searchHost;
OnCreate () вы пишете:
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(); } } });
Он отлично работает для меня.
источник
Для Котлина:
Создайте два расширения, одно для EditText и одно для TextView.
Редактировать текст:
fun EditText.clear() { text.clear() }
TextView:
fun TextView.clear() { text = "" }
и используйте это как
myEditText.clear() myTextView.clear()
источник
Вы также можете использовать атрибут android: hint в своем EditText из кода:
editText.setHint(CharSequence hint / int resid);
Тогда вам не нужен onClickListener или аналогичный. Но учтите, что значение подсказки не будет передано. EditText останется пустым. В этом случае вы можете установить для editText значение по умолчанию:
if(editText.getText().toString().equals("")) { ...use your default value instead of the editText... }
источник
Если использование EditText не является обязательным, вы можете легко реализовать это поведение с новыми компонентами материала:
<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>
Вам нужно только указать рисование, которое вы хотите для кнопки, которая очистит текст, и действие, которое она будет выполнять. Чтобы очистить текст, вы можете использовать iconMode = "clear_text", но также доступен "password_toggle".
источник
Это просто: объявите переменные виджета (
editText
,textView
иbutton
т. Д.) В классе, но инициализируйте егоonCreate
позжеsetContentView
.Проблема в том, что когда вы пытаетесь сначала получить доступ к виджету макета, вам нужно объявить макет. Объявление макета есть
setContentView
. И когда вы инициализируете переменную виджета через,findViewById
вы получаете доступid
к виджету в основном макете вsetContentView
.Надеюсь, ты понял!
источник
Я не уверен, что вы ищете это
{ <EditText . . android:hint="Please enter your name here"> }
источник