Java 忽略EditText设置ClickListener代码以编辑文本

Java 忽略EditText设置ClickListener代码以编辑文本,java,android,onclicklistener,Java,Android,Onclicklistener,我有一个EditText作为一个文本字段,用于接受活动中的电话号码和其他个人详细信息 在“活动启动”时,EditText将被禁用,直到用户选择“编辑”来编辑信息。然后它被启用,并允许用户在其中键入一个数字 一旦用户单击保存数据,EditText将使用 txtPhone.setFocusable(false); 然后,它使用onClickListener允许用户单击它并调用它包含的号码 当用户单击“编辑”编辑号码时,我正在设置 txtPhone.setFocusable(true); 要允许E

我有一个EditText作为一个文本字段,用于接受活动中的电话号码和其他个人详细信息

在“活动启动”时,EditText将被禁用,直到用户选择“编辑”来编辑信息。然后它被启用,并允许用户在其中键入一个数字

一旦用户单击保存数据,EditText将使用

txtPhone.setFocusable(false);
然后,它使用onClickListener允许用户单击它并调用它包含的号码

当用户单击“编辑”编辑号码时,我正在设置

txtPhone.setFocusable(true);
要允许EditText接收焦点,但它似乎仍在使用onClickListener,不允许编辑文本,并在log cat中发出警告:

TextView does not support text selection. Action mode canceled.
EditText侦听器的代码:

txtPhone.setOnClickListener(new View.OnClickListener()
    {   
        @Override
        public void onClick(View v)
        {
            if(txtPhone.isFocusable()==false)
            {
                if(txtPhone.getText().length() > 1)
                {
                    // Call number
                    // Using Toast to show listeners working first          
                    Toast.makeText(getApplicationContext(), "Calling... " + txtPhone.getText().toString(), Toast.LENGTH_LONG).show();
                }
            }
        }
    });
编辑文本xml:

<EditText
     android:id="@+id/txtPhone"
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
     android:ems="10"
     android:enabled="false"
     android:hint="Telephone..."
     android:inputType="phone"
     android:maxLength="11" />


如何使文本像第一次启动时一样可编辑并忽略侦听器,但当无法聚焦呼叫号码时,我似乎无法使其按预期工作

我无法重现您收到的警告,但无法在未聚焦时按文本框显示祝酒词。我确实尝试了以下方法来复制您试图实现的目标。希望我理解正确

EditText

我没有使用
enabled=“false”
而是使用
focusable=“false”
。这将具有与启用为false类似的行为,但允许
txtPhone
onClickListener
启动

<EditText
    android:id="@+id/txtPhone"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:ems="10"
    android:focusable="false"
    android:hint="Telephone..."
    android:inputType="phone"
    android:maxLength="11" />

因此,当我第一次启动活动时,
txtPhone
是不可编辑的。当我单击编辑按钮时,
txtPhone
将变为可编辑状态,我可以输入数字。最后,我再次单击编辑按钮以禁用
txtPhone
,当我按下按钮时,土司出现。

我知道您正试图用独特的设计实现一个平滑/圆滑的界面,但使用编辑文本字段和一个只显示call的按钮不是更容易吗?这正是我想要的,非常感谢您的txtPhone.setFocusableInTouchMode(true);是我需要但不知道其用途的部件:D
btnEdit.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        if (txtPhone.isFocusable()) {
            txtPhone.setFocusable(false);
        } else {
            txtPhone.setFocusableInTouchMode(true);
        }
    }
});

txtPhone.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        if (txtPhone.isFocusable() == false) {
            if (txtPhone.getText().length() > 1) {
                // Call number
                // Using Toast to show listeners working first
                Toast.makeText(MainActivity.this, "Calling... " + txtPhone.getText().toString(), Toast.LENGTH_LONG).show();
            }
        }
    }
});