Android 在onClickListener中修改视图

Android 在onClickListener中修改视图,android,onclicklistener,Android,Onclicklistener,我已经在一个单独的类中实现了onClickListener和我的应用程序的主要活动。主类包含一些按钮和一些edittext,当用户按下cancel按钮时,edittext提示应该被重置。 主要活动 public ButtonListener(Context cx , Button b, EditText f) { cntx = cx; button = b; et = f; } @Override public void onClick(View v) { //

我已经在一个单独的类中实现了onClickListener和我的应用程序的主要活动。主类包含一些按钮和一些edittext,当用户按下cancel按钮时,edittext提示应该被重置。 主要活动

public ButtonListener(Context cx , Button b, EditText f) {
    cntx = cx;
    button = b;
    et = f;
}
@Override
public void onClick(View v) {
    // TODO Auto-generated method stub
            //check wich button was pressed
    if(button.getId() == R.button.button_cancel) {
        et.setHint(R.string.et_nome);
    }
    else {
            //operations for other buttons
但它不起作用。当我按“取消”时,编辑文本不会被删除。 在主要活动中,我用

Button b = (Button)findViewById(R.button.button_cancel);
并设置侦听器

b.setOnclickListener(new ButtonListener(this, b, edittext));
怎么了?

您应该更改:

if(button.getId() == R.button.button_cancel)
致:

因此,代码检查引发单击事件的元素的标识符,而不是您的成员变量
button

,您应该更改:

if(button.getId() == R.button.button_cancel)
致:


因此,代码将检查引发单击事件的元素的标识符,而不是您的成员变量
按钮

尝试将其文本设置为空:

et.setText(“”)

您可以查看其他方法


另一种处理方法是隐藏按钮以暂时消除它。签出。

尝试将其文本设置为空白:

et.setText(“”)

您可以查看其他方法


另一种处理方法是隐藏按钮以暂时消除它。签出。

setHint()
不会删除文本,它会设置视图为空时显示的提示
setHint()
不会删除文本,它会设置视图为空时显示的提示这应该不是问题,因为我用一条日志消息检查了if语句的调用是否正确,它可以工作,但有点多余。考虑使用<<代码>按钮>代码> > < <代码> r.Buttual.ButoNoXCuff剔除< /代码>的另一个<代码> ButoListListabue/Cux>类。现在该调用的if语句永远不会为真。这应该不是问题,因为我已经用一条日志消息检查了if语句,它被正确地调用了。很好,它可以工作,但有点多余。考虑使用<<代码>按钮>代码> > < <代码> r.Buttual.ButoNoXCuff剔除< /代码>的另一个<代码> ButoListListabue/Cux>类。现在该调用的if语句将永远不会为真。是的,它有效。你能解释一下为什么我不能使用setHint()吗?setHint()是一个永久元素,当视图被加载时,它会被用户交互清除。是的,它可以工作。你能解释一下为什么我不能使用setHint()吗?setHint()是一个永久元素,当视图被加载时,它会被用户交互清除。