私のアプリは、編集テキスト内のファイルを開いてユーザーに表示する必要があります。ユーザーがそれを変更したい場合は、textwiew 内を押して書き込みます。戻るボタンが押されたときにこれを行った後、テキストが変更された場合は変更を保存する必要があります。それ以外の場合は、現在のアクティビティを閉じて親に移動します。テキストが編集されたかどうかを確認する方法はありますか? 私の考えは、ファイルと編集テキストの文字長を明示的に比較することですが、この「失礼な」方法よりも優れた方法はありますか?
質問する
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
true かどうかを確認します。これにより、ユーザーが編集を行ってから元に戻した場合に誤検知が発生する可能性がありますが、ユーザーの変更を失うよりも、いくつかの誤検知が発生する方が適切です。
于 2013-03-27T21:12:35.680 に答える
3
実際には、長さではなくテキストを比較する必要があります。ユーザーは単語を置き換えるだけです。TextWatcher は、ユーザーが編集中であることを通知しますが、変更して元に戻す可能性があります。したがって、文字列を比較する必要があります。
于 2013-03-27T21:12:18.553 に答える