gpt4 book ai didi

java - Android onFocusChange 和 onClickListener

转载 作者:行者123 更新时间:2023-12-01 11:36:16 33 4
gpt4 key购买 nike

我试图在单击 EditText 时一致地调用某个函数。问题是,如果我实现 onClick,则第一次单击 EditText 时不会调用 onClick,并且当我添加 onFocusChange 来修复此问题时,随后添加到同一 EditText 的监听器似乎不起作用。用户还应该能够在聚焦或单击 EditText 后在其中输入内容。 OnTextChanged 不是一个选项。你能有两个这样的听众吗?

我在onCreateView中设置receiverEditText变量并在onResume中调用addListeners。

Java:

public void addListeners()
{
receiverEditText.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
doTheThingFunction();
}
});

View.OnFocusChangeListener listener = new View.OnFocusChangeListener()
{
@Override
public void onFocusChange(View v, boolean hasFocus)
{
doTheThingFunction();
}
};
receiverEditText.setOnFocusChangeListener(listener);
}

XML:

<EditText
android:id="@+id/messageReceiver"
android:layout_width="match_parent"
android:layout_height="35dp"
android:padding="3dp"
android:hint="@string/recipient"
android:focusableInTouchMode="true"
android:focusable="true">
<requestFocus />
</EditText>

最佳答案

@Waltari 我创建了演示来检查某些 edittextview 的焦点状态。检查代码。

在 Activity 的 onCreate() 中使用它。

EditText messageReceiver = (EditText) findViewById(R.id.messageReceiver);

messageReceiver.setOnFocusChangeListener(new OnFocusChangeListener() {

@Override
public void onFocusChange(View v, boolean hasFocus) {
if (hasFocus) {
Toast.makeText(getApplicationContext(), "Focus gained", 1)
.show();
} else {
Toast.makeText(getApplicationContext(), "Focuse released",
1).show();
}
}
});

在您的XML 文件

<EditText
android:id="@+id/messageReceiver"
android:layout_width="match_parent"
android:layout_height="35dp"
android:hint="recipient"
android:padding="3dp" >
</EditText>

<EditText
android:layout_width="match_parent"
android:layout_height="35dp"
android:hint="recipient"
android:padding="3dp" >
</EditText>

这让我获得了 messageReceiver 的焦点释放事件。

当您在 ID 为“messageReceiver”的 Edittext 上显示光标时,并且当您单击另一个 edittext 时,将获得焦点,而不是调用“messageReceiver”释放的焦点。

这意味着您必须在工作完成后管理焦点释放。

关于java - Android onFocusChange 和 onClickListener,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29960464/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com