我想在按下撤消按鈕時恢復以前的文本內容。使用下面的代碼,我可以看到如何更改字符串,將新字符串保存到堆棧。爲了恢復,我只是彈出堆棧以獲取以前的文本。但是這種方法不考慮可跨越的變化。如何追蹤文字或其造型或兩者的變化?如何保存edittext內容更改列表?
Stack<String> save = new Stack<>();
Runnable saveRunnable = new Runnable() {
@Override public void run() {
if (tvValueDesc != null) {
String text = tvValueDesc.getText().toString();
if (save.isEmpty()) save.push(text);
if (!save.peek().equals(text)) save.push(text);
handler.postDelayed(this, 1000);
}
}
};
@OnClick(R.id.btn_undo) void restore() {
handler.removeCallbacksAndMessages(null);
if (!save.empty()) save.pop();
if (!save.empty()) {
tvValueDesc.setText(save.peek());
} else {
tvValueDesc.setText(null);
}
handler.postDelayed(saveRunnable, 1000);
}