2013-03-27 112 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會告訴你用戶正在編輯,但他可能會改變並將其改回。所以你真的需要比較字符串。