我的应用程序应该在编辑文本中打开一个文件以将其显示给用户。如果用户想修改它,只需按下 textwiw 并写入。按下后退按钮后执行此操作,如果文本被修改,则应保存更改,否则,只需关闭当前活动并转到父项。有没有办法查看文本是否被编辑?我的想法是明确比较文件和编辑文本的字符长度,但有什么比这种“粗鲁”的方法更好的方法吗?
问问题
1995 次
2 回答
4
您可以使用 TextWatcher:
boolean changed = false;
EditText edit = (EditText)findViewById(R.id.medittext);
edit.addTextChangedListener(new TextWatcher() {
@Override
public void afterTextChanged(Editable s) {
// TODO Auto-generated method stub
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
// TODO Auto-generated method stub
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
changed = true;
}
});
如果更改与文本中的删除长度相同,则仅比较长度可能会导致误报。
当用户按下返回时,只需检查是否changed
为真。如果用户进行了编辑然后撤消了它,这可能会导致误报,但最好有一些误报而不是丢失用户更改。
于 2013-03-27T21:12:35.680 回答
3
实际上,您必须比较文本而不是长度,没有什么比这更好的了。用户可以只替换一个单词。TextWatcher 会告诉您用户正在编辑,但他可能会更改并更改回来。所以你真的需要比较字符串。
于 2013-03-27T21:12:18.553 回答