我将尝试在写作或应用EditText效果时应用撤销和重做操作。为此,我从Link下载了一个类,并在我的应用程序中使用它。
撤销操作:
我已尝试使用其他解决方案,但没有成功。因此,如果有人使用此方法或任何其他方法实现了相同的功能,请建议一些代码或方法来实现此功能。 编辑
TextViewUndoRedo mTextViewUndoRedo = new TextViewUndoRedo(edtNoteDescription);
mTextViewUndoRedo.undo();
关于重做
TextViewUndoRedo mTextViewUndoRedo = new TextViewUndoRedo(edtNoteDescription);
mTextViewUndoRedo.redo();
但是我不知道为什么这段代码不起作用,我已经记录了日志并检查了函数Undo是否被调用,不幸的是我发现它确实被调用了,但是进入了下面的方法。
if (edit == null) {
return;
}
我已尝试使用其他解决方案,但没有成功。因此,如果有人使用此方法或任何其他方法实现了相同的功能,请建议一些代码或方法来实现此功能。 编辑
btnUndo.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
TextViewUndoRedo mTextViewUndoRedo = new TextViewUndoRedo(edtNoteDescription);
mTextViewUndoRedo.undo();
}
});
getPrevious()
方法返回null,因为EditHistory
内部的mmPosition
是0。这意味着历史记录是空的。你是否在一个空的编辑文本上调用了undo操作? - nem035EditHistory
中的mmPosition
是 0,而不是EditHistory
本身。Undo()
方法调用EditItem edit = mEditHistory.getPrevious();
,并且正如您所说,edit
是null
。这意味着getPrevious()
返回了null
。在getPrevious()
中,执行语句if (mmPosition == 0) { return null; }
,因此mmPosition
必须为 0。当EditHistory.mmHistory
为空时,这是正确的,因此我假设您正在对空的EditText
应用此操作。您能否发布一段更大的代码,显示您如何按照什么顺序调用这些方法? - nem035