Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 检查编辑文本是否已修改_Android_Android Edittext - Fatal编程技术网

Android 检查编辑文本是否已修改

Android 检查编辑文本是否已修改,android,android-edittext,Android,Android Edittext,我的应用程序应该在edittext中打开一个文件以向用户显示它。如果用户想要修改它,只需按inside textwiew并写入即可。按“上一步”按钮执行此操作后,如果文本已修改,则应保存更改,否则,只需关闭当前活动并转到父级。 有没有办法看看文本是否被编辑过? 我的想法是显式地比较file和edittext字符长度,但是有什么比这个粗糙的方法更好呢?没有什么比这更好的了,实际上你必须比较文本,而不是长度。用户只需替换一个单词即可。一个文本观察者会告诉你一个用户正在编辑,但他可能会改变,然后再改变

我的应用程序应该在edittext中打开一个文件以向用户显示它。如果用户想要修改它,只需按inside textwiew并写入即可。按“上一步”按钮执行此操作后,如果文本已修改,则应保存更改,否则,只需关闭当前活动并转到父级。 有没有办法看看文本是否被编辑过?
我的想法是显式地比较file和edittext字符长度,但是有什么比这个粗糙的方法更好呢?

没有什么比这更好的了,实际上你必须比较文本,而不是长度。用户只需替换一个单词即可。一个文本观察者会告诉你一个用户正在编辑,但他可能会改变,然后再改变回来。所以你真的需要比较字符串。

没有比这更好的了,实际上你需要比较的是文本,而不是长度。用户只需替换一个单词即可。一个文本观察者会告诉你一个用户正在编辑,但他可能会改变,然后再改变回来。因此,您确实需要比较字符串。

您可以使用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;



        } 

    });
如果更改的长度与文本中删除的长度相同,则仅比较长度可能会导致误判


当用户按下back键时,只需检查changed是否为true。如果用户进行了编辑,然后将其取消,这可能会导致误报,但与其丢失用户更改,不如进行一些误报。

您可以使用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;



        } 

    });
如果更改的长度与文本中删除的长度相同,则仅比较长度可能会导致误判

当用户按下back键时,只需检查changed是否为true。如果用户进行了编辑,然后将其取消,这可能会导致误报,但最好有一些误报,而不是丢失用户更改