2013-03-27 100 views
1

我的应用程序应该在edittext内打开一个文件以向用户显示。如果用户想要修改它,只需按下textwiew并写入它。当按下后退按钮后,如果文本被修改,则应保存更改,否则,关闭当前活动并转到父项。 有办法看看文本是否被编辑? 我的想法是明确地比较文件和edittext字符的长度,但有什么比这个“粗鲁”的方法更好?检查EditText是否被修改

回答

3

您可以使用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是否为真。如果用户进行了编辑并将其解除,则这可能会导致误报,但最好有一些误报,而不是丢失用户更改。

3

没有更好的,实际上你必须比较文本,而不是长度。用户可以替换一个单词。 TextWatcher会告诉你用户正在编辑,但他可能会改变并将其改回。所以你真的需要比较字符串。