gpt4 book ai didi

Android onBackPressed,如何测试未保存的更改是否*实际*进行了?

转载 作者:行者123 更新时间:2023-11-29 18:00:15 27 4
gpt4 key购买 nike

我已经进行了长时间的搜索并尝试了常见的嫌疑人,但现在是寻求帮助的时候了。

我的 Android Activity 非常愉快地从 SQLite 加载 EditText、Spinner 和 CheckBox 值。

问题在于检测用户此后是否实际更改了一个值,因此如果进行了未保存的更改(即她/他没有点击“保存”按钮),我可以在 onBackPressed 处发出警告。

例如,使用我尝试过的 EditText:

  • 使用 TextWatcher.onTextChanged 监听器,但它会在首次实例化 EditText 时触发,这使得设置“数据已更改”标志变得毫无意义

  • 为 DONE、ENTER、NEXT 和 DEL 键捕获各种 KEY_DOWN 事件,但混合结果无论如何对我的 Spinners 和 CheckBoxes 都没有帮助

  • onTouchListener(我想,但我现在有点云里雾里),无济于事

我想我正在寻找的是一个 View 类监听器,它仅在 Activity 稳定下来后才附加,它会在后续状态更改时触发。但是,我搜索的任何内容都不符合要求。

其他人如何处理这个问题?

感谢您的指导。

最佳答案

我想不出任何适用于所有类型小部件的通用机制。

不过,更简洁的解决方案是:

  • 拥有一个代表您在屏幕上显示的所有数据的模型 (POJO)
  • 小部件中的每个更改都反射(reflect)在模型中
  • 每次在 POJO 中调用 setter 时,它都会将新设置值与旧设置值进行比较
  • 如果进行了更改,则会引发一个内部标志。
  • 如果标志在 onBackPressed 时出现,那么您将显示一个 AlertDialogFragment 询问是否应保存更改的值。

关于Android onBackPressed,如何测试未保存的更改是否*实际*进行了?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16569102/

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