我想在按下撤消按钮时恢复以前的文本内容。使用下面的代码,我可以看到如何更改字符串,将新字符串保存到堆栈。为了恢复,我只是弹出堆栈以获取以前的文本。但是这种方法不考虑可跨越的变化。如何追踪文字或其造型或两者的变化?如何保存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);
}