我正在尝试设置和onclicklistener,以便当我在edittext元素中单击时,它将清除其当前内容。这里有什么问题吗?当我编译这段代码时,我得到一个强制退出和ActivityManager:无法调度DDM块4d505251:没有处理程序定义错误。
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("");
}
}
答案 0 :(得分:170)
您也可以使用以下代码
editText.getText().clear();
答案 1 :(得分:91)
首先,您需要调用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("");
}
}
答案 2 :(得分:37)
只需在EditText中使用android:hint
属性即可。当文本框为空且未聚焦时,此文本显示,但在选择EditText框时消失。
答案 3 :(得分:8)
我们可以通过两种方式清除EditText数据
第一个设置EditText为空,如下面的行
editext.setText("");
第二个清除EditText数据的方法
editText.getText().clear();
我建议第二种方式
答案 4 :(得分:7)
您的代码应为:
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("");
}
}
}
答案 5 :(得分: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("");
}
}
答案 6 :(得分:4)
非常简单清除editText值。当你点击按钮时,只需按照1行代码。
内部按钮或任何你想要的地方。只能使用此
editText.setText("");
答案 7 :(得分: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();
}
});
}
}
答案 8 :(得分:2)
//清除何时单击“清除按钮”
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("");
}
});
这将有助于清除您键入的错误关键字,而不是一次又一次地按退格键,您只需单击按钮即可清除所有内容。它为我工作。希望它有助于
答案 9 :(得分: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;
});
答案 10 :(得分:1)
对于Kotlin:
创建两个扩展,一个用于EditText,一个用于TextView
EditText:
fun EditText.clear() { text.clear() }
TextView:
fun TextView.clear() { text = "" }
并像使用它
myEditText.clear()
myTextView.clear()
答案 11 :(得分:1)
通过设置空字符串,您可以清除编辑文本
editext.setText("");
答案 12 :(得分:1)
我不知道在实施上述解决方案时我做了什么错误,但是他们对我不成功
txtDeck.setOnFocusChangeListener(new OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
txtDeck.setText("");
}
});
这对我有用,
答案 13 :(得分:0)
您还可以通过代码在EditText中使用'android:hint'属性:
editText.setHint(CharSequence hint / int resid);
然后,您不需要任何onClickListener或类似的对象。但是请注意,不会传递提示值。 editText将保持为空。在这种情况下,您可以使用默认值设置editText:
if(editText.getText().toString().equals("")) {
...use your default value instead of the editText... }
答案 14 :(得分:0)
my button
<Button
android:id="@+id/clear_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="8dp"
android:layout_marginEnd="8dp"
android:layout_marginRight="8dp"
android:text="@string/title_clear"
android:onClick="clearLog"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintRight_toRightOf="parent" />
我的功能
public void clearLog(View view) {
mLog.setText("");
mLog.clearComposingText();
}
}
答案 15 :(得分:0)
如果不是必须使用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”。
答案 16 :(得分:0)
在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();
}
}
});
对我来说很好。
答案 17 :(得分:0)
这很简单:在类中声明小部件变量(editText
,textView
,button
等),然后在onCreate
之后的setContentView
中对其进行初始化。 / p>
问题是,当您首先尝试访问布局的窗口小部件时,必须声明布局。声明布局为setContentView
。
当您通过findViewById
初始化窗口小部件变量时,您正在id
的主布局中访问窗口小部件的setContentView
。
我希望你能得到它!
答案 18 :(得分:-1)
我不确定您是否正在搜索
{
<EditText
.
.
android:hint="Please enter your name here">
}