【问题标题】:EditText onclick action only executed when refocussing the EditTextEditText onclick 动作仅在重新聚焦 EditText 时执行
【发布时间】:2019-10-23 06:19:17
【问题描述】:

我正在尝试创建一个简单的 editText,我为它定义了一个简单的 onclick 操作,该操作再次将名称输出到窗口。 我的问题是,似乎只有当我再次重新调整 editText 时才会调用此操作。 所以我关注editText,输入我的名字并按Enter。现在窗口关闭,但名称没有放在窗口中。当我再次关注 editText 时,名称会被放到窗口中。

当我在没有在 XML 中设置 android:imeOptions="actionDone" 的情况下执行完全相同的操作时,一切正常(除了键盘没有关闭,当然也没有关闭)

来自 XML 的我的 editText:

<EditText
            android:id="@+id/name_edit_text"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginBottom="16dp"
            android:hint="Name"
            android:imeOptions="actionDone"
            android:inputType="text"
            android:onClick="readName" />

我的 readName() 方法:

public void readName(View view) {
        EditText nameEditText = (EditText) findViewById(R.id.name_edit_text);
        String nameWorking = nameEditText.getText().toString();
        name = nameWorking;
        displayOrderSummary();
    }

【问题讨论】:

  • 你能把你的活动代码和 siplayOrderSummary() 也显示出来吗?

标签: android android-edittext imeoptions


【解决方案1】:

不完全确定您的整个活动是什么样的,但我相信如果您在 readName() 方法之外删除绑定,它应该可以正常工作。

将下面的代码放入您的onCreate()

EditText nameEditText = (EditText) findViewById(R.id.name_edit_text);

【讨论】:

    【解决方案2】:

    您可以将以下内容放入onCreate() 方法中,而不是使用android:onClick

    EditText nameEditText = (EditText) findViewById(R.id.name_edit_text);
    nameEditText.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            readName(v)
        }
    }
    
    

    【讨论】:

    • 这会导致完全相同的行为。没有 android:imeOptions="actionDone" 也可以正常工作,但是当设置了这个时,只有在重新打开 EditText 时才会更改名称。是不是只有在点击 EditText 时才会调用 onClick 方法?这可以解释我的问题:当我点击 EditText 时,监听器会触发。第一次,框中没有名字,所以名字留空。当我关闭时,听众不在乎,所以它不会改变任何东西。当我重新打开它时,它会再次触发并更改名称。但我需要的是一个在关闭/取消聚焦 EditText 时触发的侦听器
    猜你喜欢
    • 2012-01-09
    • 2012-02-12
    • 2016-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-28
    相关资源
    最近更新 更多