2011-03-15 115 views
50

我试图设置onclicklistener,这样当我点击edittext元素时,它将清除它的当前内容。这里有什么不对吗?当我编译这段代码时,我得到一个强制退出和ActivityManager:无法调度DDM块4d505251:没有处理程序定义的错误。输入时在EditText中清除文本

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

谢谢!是否有我必须申报的理由? – locoboy 2011-03-15 06:34:40

+2

是的!你必须先调用setContentView(id)。以便系统可以显示屏幕内容,然后指出可能存在于屏幕内容中的EditText。否则,它将显示强制关闭对话框的异常。 – 2011-03-15 06:57:11

+0

您还可以通过设置edittext的提示属性来实现相同的功能。你只需要在提示属性中设置文本,就可以实现相同的功能。 – bhavindesai 2011-03-15 06:27:16

回答

56

首先你需要调用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.setText(""); 
    } 
} 
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(""); 
       } 
      } 
     } 
3
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(""); 
    } 
} 
1

我不知道我做了什么错误,在实施上述解决方案,BT尝试失败对我来说

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

这适用于我,

137

也可以使用下面

editText.getText().clear(); 
+0

如果你想要做的是编程式的,这很棒。 – 2018-02-15 23:08:55

+0

没有方法clear();对于edittext – 2018-03-01 12:56:02

+0

阿里,你是绝对正确的。但是我们首先调用方法getText()。它返回我们可编辑的实例,它具有方法clear(); – 2018-03-04 20:17:28

1

//要清除当清除按钮被点击

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

这将有助于清除您在键入再次按Backspace键,这样,而不是错误的关键字,再只需单击按钮,清除everything.It为我工作。希望它可以帮助

29

只需在EditText中使用android:hint属性。当文本框为空且未聚焦时,此文本显示,但在选择EditText框时消失。

+0

这应该是接受的答案,为简单起见+1。 – 2018-02-15 23:08:09

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

      } 
     }); 
    } 


} 
+0

不要发布你的整个代码plz提供op的必要解决方案,帮助他们轻松理解 – 2014-02-03 05:59:00

2

非常简单的清除editText values.when你点击按钮,然后只遵循1行代码。

内部按钮或任何üwant.Only使用

editText.setText(""); 
0
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; 
    }); 
0

通过设置空字符串就可以全部清除您的EditText

editext.setText(""); 
相关问题