我已进行了详尽的搜索,并尝试了通常的嫌疑人,但现在该寻求帮助了。
我的Android活动足够愉快地从SQLite加载EditText,Spinner和CheckBox值。
问题在于感测用户此后是否实际更改了值,因此如果进行了未保存的更改(即,他/他没有点击“保存”按钮),我可以警告onBackPressed。
例如,我尝试使用EditText:
使用TextWatcher.onTextChanged侦听器,但在首次实例化EditText时会触发它,这使得设置“数据已更改”标志毫无意义
捕获DONE,ENTER,NEXT和DEL键的各种KEY_DOWN事件,但结果混杂,无论如何对我的Spinners和CheckBoxes都无济于事
onTouchListener(我认为,但是我现在有点迷糊了),无济于事
我猜我正在寻找的是View类侦听器,仅在活动稳定后才附加该View类侦听器,从而触发后续状态更改。但是,我所搜索的都不适合。
别人如何处理这个问题?
感谢您的指导。
最佳答案
我想不出任何适用于所有小部件的通用机制。
但是,更干净的解决方案是:
具有代表您在屏幕上显示的所有数据的模型(POJO)
小部件中的每个更改都反映在模型中
每次在POJO中调用设置器时,都会将新设置值与旧设置值进行比较
如果进行了更改,则它会引发一个内部标志。
如果标志在onBackPressed处引发,则显示一个AlertDialogFragment,询问是否应保存更改的值。
关于android - Android onBackPressed,如何测试是否*实际上*未保存的更改?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16569102/