gpt4 book ai didi

android - EditText addTextChangedListener 仅用于用户输入

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:36:11 27 4
gpt4 key购买 nike

我有一个 EditText,我可以在其中监听文本的变化:

editText.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {}

@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {}

@Override
public void afterTextChanged(Editable s) {
// do stuff
}
});

目前为止一切正常,如果我在 EditText 中键入内容,afterTextChanged() 中的内容将被执行。现在,在同一个 Activity 中,我有一个 ToggleButton,它可以更改 EditText 中的字符串。如何防止由于 ToggleButton 触发“afterTextChanged”而导致此文本更改?

PS:不确定这是否相关,但具体来说我有一个 EditText 接受小数或小数(例如“0.75”或“3/4”)并且切换按钮应该在小数和小数显示之间切换,但应该不会触发“afterTextChanged”中的任何内容,因为该值保持不变 (3/4=0.75)。

最佳答案

我认为有两种可能:

  1. 注册/取消注册监听器
  2. 旗帜

标记示例:

public class MainActivity extends AppCompatActivity{
boolean automaticChanged = false;
ToggleButton toggleButton;
EditText editText;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

//...
toggleButton.setOnClickListener(onClickListener);
editText.addTextChangedListener(textWatcher);
//...
}

TextWatcher textWatcher = new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}

@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}

@Override
public void afterTextChanged(Editable s) {
if (!automaticChanged) {
// do stuff
} else {
automaticChanged = false;
}
}
};

View.OnClickListener onClickListener = new View.OnClickListener() {
@Override
public void onClick(View v)
{
automaticChanged = true;
// do stuff
}
};
}
}

关于android - EditText addTextChangedListener 仅用于用户输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33257937/

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