Android 编辑文本单击不工作

Android 编辑文本单击不工作,android,click,android-edittext,Android,Click,Android Edittext,我正在经历一个问题 XML编码 <EditText android:id="@+id/edt_txt_id" android:layout_width="match_parent" android:layout_height="wrap_content" android:clickable="true" android:focusable="false" android:onClick="editTextClick" > </EditText

我正在经历一个问题

XML编码

<EditText
   android:id="@+id/edt_txt_id"
   android:layout_width="match_parent"
   android:layout_height="wrap_content"
   android:clickable="true"
   android:focusable="false"
   android:onClick="editTextClick" >
</EditText>
public void editTextClick(View v) {

     if (v.getId() == R.id.edt_txt_id){

        System.out.println(" edit text click");
        EditText edtxtx =(EditText)v;
        edtxtx.requestFocus();
        edtxtx.setText("");

       }
}
我想,当我点击编辑文本,然后当前的文本必须是disapperar。但是当我点击

android:focusable="false"
单击事件工作正常,但光标不再位于编辑文本处。这意味着,如果要输入一些新文本,那么即使光标不在编辑文本,如何输入这些新文本,如果我使用

android:focusable="true"

然后单击事件不起作用。但可用于任何新编辑。有什么问题?我知道这是一个愚蠢的错误,但我不知道在哪里。提前谢谢大家。

您需要设置文本

更改
edtxtx.getText(“”)

edtxtx.setText("");
这样试试

public void editTextClick(View v) {
        if (v.getId() == R.id.edt_txt_id) {
            System.out.println(" edit text click");
            EditText edtxtx = (EditText) v;

            edtxtx.setFocusable(true); // Add This Line And try

            edtxtx.requestFocus();
            edtxtx.setText("");

        }
    }
试试这个

public void editTextClick(View v) {
     if (v.getId() == R.id.edt_txt_id){
        System.out.println(" edit text click");
        EditText edtxtx =(EditText)v;
        edtxtx.setFocusable(true);
        edtxtx.setText("");

     }}

之后再次
setFocusable(false)以便它可以再次执行单击事件。

而不是在xml中设置
android:focusable=“false”
。。。在
onCreate()
上的代码中写入此代码:


您好,在我看来,请为OnFocusChangeListener编写代码,您可以编写如下

final EditText edittxt = (EditText) findViewById(R.id.edittext);
    edittxt.setOnFocusChangeListener(new OnFocusChangeListener()
    {
        @Override
        public void onFocusChange(View v, boolean isFocus) 
        {
           //yours code writing and actions to take further
        }
    });
 editText.setOnClickListener(new OnClickListener(){
        public void onClick(View v){
            ((EditText)v).setText("");
        }
    });
您可以检查isFocus,它可以是真的,也可以是假的,这样您就可以进一步进行,通过这种方式可以完成

if (isFocus == true)
            {//some action
            } else{//another action}
另一种可能的方法是使用click listener,如下所示

final EditText edittxt = (EditText) findViewById(R.id.edittext);
    edittxt.setOnFocusChangeListener(new OnFocusChangeListener()
    {
        @Override
        public void onFocusChange(View v, boolean isFocus) 
        {
           //yours code writing and actions to take further
        }
    });
 editText.setOnClickListener(new OnClickListener(){
        public void onClick(View v){
            ((EditText)v).setText("");
        }
    });

您需要为
EditText
实现
setonFocusChange
侦听器,以实现所需的功能

下面是焦点侦听器示例

edtxtx.setOnFocusChangeListener(new OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
    if(hasFocus){
        Toast.makeText(getApplicationContext(), "got the focus", Toast.LENGTH_LONG).show();
           edtxtx.setText("");
    }else {
        Toast.makeText(getApplicationContext(), "lost the focus", Toast.LENGTH_LONG).show();
    }
   }
});

只需将此属性添加到您的
编辑文本中即可:

android:focusableInTouchMode="false"

我知道这个问题很久以前就被问到了,我想我的回答会帮助别人。我面临着同样的问题,editText不关注点击

我的EditText的父布局有下面的代码,它阻止了键盘

android:descendantFocusability="blocksDescendants"

删除此项并尝试对我有效。

很抱歉,它是setText(“”),这是我的打字错误。但这不是我的主要问题。如果您能帮助我解决我的主要问题,我将非常高兴。我想这是我第一次看到有人为EditText实现了onClick Listener。顺便问一下,你想做什么?你应该使用你的建议,这是值得赞赏的,但我不能改变我的编码方式,因为它有很长的理由,请给我建议以上的代码上下文你想实现一种提示功能吗?实际上这是为自定义BaseApter。在我的主活动中单击事件,在我的应用程序中,它在自定义对话框中包含许多单击事件,所以我在我的主活动的单个方法中定义了所有这些。我正在经历这个问题,从过去的两天,最后我张贴这个线程。请帮我解决这个问题。如果没有android:focusable=“…”,程序执行不会进入if{}块。@DilAka检查我的答案。谢谢你的建议,但我告诉过你我不能用你的方式处理它,我使用的是自定义BaseAdater,我声明它是setter-getter。单击mainActivity中的事件。如果我按照您的建议使用,我将得到NullPointer异常,因为edt_xtx未在我的mainActivity中声明。