gpt4 book ai didi

java - 在 EditText 中检测键盘的关闭(通过后退按钮)

转载 作者:行者123 更新时间:2023-11-30 00:51:26 26 4
gpt4 key购买 nike

我有一组由 for 循环生成的 EditText 字段。每次编辑该字段时,我都需要运行一些计算并更新其他文本字段(想想 excel 电子表格总和)。

我的逻辑是有效的,我什至将其设置为将最后一个字段的向下焦点更改替换为第一个字段(以避免键盘上显示“完成”按钮)。

但是,如果用户按下后退按钮关闭键盘,焦点不会改变,计算也不会完成。输入的数字不同,但现在总数是错误的。我找不到检测键盘何时关闭的位置,因此我可以解决此问题。

我现在拥有的:

final EditText etWeight = new EditText(this);
etWeight.setText("initWt");
etWeight.setSelectAllOnFocus(true);
etWeight.setOnFocusChangeListener(new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View view, boolean b) {
//code to update after weight is changed
}
));
llWeightRow.addView(etWeight);

我还尝试将此代码放入 setOnEditorActionListenersetOnClickListenersetOnKeyListener 中。

除了其中一些没有按预期工作之外,如果按下后退按钮关闭键盘,它们似乎都不会触发。我在网上搜索过,但只提出了如何用我自己的按钮手动隐藏键盘的建议;我似乎找不到与平板电脑本身的后退按钮有关的任何信息。

我如何检测到键盘已被解除,以便我可以强制更改焦点(或只是重新运行计算代码)?

更新:没有将此标记为已回答,因为这没有回答这个特定问题,但我目前正在通过切换到 onTextChanged 方法来产生我想要的结果(其他字段总是更新)。现在,每当 EditText 中的任何文本发生更改时,这些值都会更新。

etWeight.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence cs, int i, int i1, int i2) {
}
@Override
public void onTextChanged(CharSequence cs, int i, int i1, int i2) {
//calc and update code
}
@Override
public void afterTextChanged(Editable editable) {
}
});

最佳答案

您是否尝试过覆盖 onBackPressed?您可以在那里进行操作。

@Override
public void onBackPressed() {
// Make needed preparations here
super.onBackPressed();
}

关于java - 在 EditText 中检测键盘的关闭(通过后退按钮),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40960686/

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