gpt4 book ai didi

android - 编辑文本 : Detect user input change versus load data change

转载 作者:搜寻专家 更新时间:2023-11-01 08:23:25 25 4
gpt4 key购买 nike

我有一个带有 Activity 的应用程序。此 Activity 有一个 EditText 字段。此字段在 Activity 方法 onStart()

上加载用户名

现在用户可以编辑他的名字并导航到下一个 Activity 。我想检测用户是否确实进行了任何更改或不提示他保存更改。

例如用户名是“Sam Jones”而他没有编辑它,我不想提示他保存。但如果他将其更改为“Sam”,那么我想提示他。

所以我在这个EditText 字段中添加了一个TextWatcher。我创建了一个 bool 标志“MADE_CHANGES”,我正在按照以下方式更改此标志。

TextWatcher textWatcher = new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {

}

@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
MADE_CHANGES = true;
}

@Override
public void afterTextChanged(Editable editable) {

}

但是,此方法甚至会被 Activity 的 onStart 方法调用。可以理解,因为 EditText 正在从一个空字段更改为“Sam Jones”。所以即使用户没有对他的名字进行任何更改,我的“保存”提示也会出现。

是否有任何优雅的解决方案来检查 EditText 是否已被用户更改,同时排除由 onStart 触发的初始首次数据加载事件?

最佳答案

onStart()设置文本时,首先移除TextWatcher

if(textWatcher != null){
myEditText.removeTextChangedListener(textWatcher);
}

设置好文字后再添加。对于这种方法,您必须使 TextWatcher 成为您的类的一个字段。

关于android - 编辑文本 : Detect user input change versus load data change,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47837656/

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