1

我的应用程序应该在编辑文本中打开一个文件以将其显示给用户。如果用户想修改它,只需按下 textwiw 并写入。按下后退按钮后执行此操作,如果文本被修改,则应保存更改,否则,只需关闭当前活动并转到父项。有没有办法查看文本是否被编辑?我的想法是明确比较文件和编辑文本的字符长度,但有什么比这种“粗鲁”的方法更好的方法吗?

4

2 回答 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 回答