我正在尝试在我的 EditText 中写入或应用效果时应用撤消和重做操作。为此,我已经从这个 Link 下载了类(class)然后我在我的应用程序中像这样使用它。
用于撤消
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();
}
});
最佳答案
问题可能是每次单击按钮时您都在创建 TextViewUndoRedo
对象吗?
这就是为什么 EditHistory
是空的,因为它每次都被重新创建。
这行不通吗?
TextViewUndoRedo mTextViewUndoRedo = new TextViewUndoRedo(edtNoteDescription);
btnUndo.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
mTextViewUndoRedo.undo();
}
});
正如我在评论中所说,Undo()
方法调用 mEditHistory.getPrevious()
但 getPrevious()
返回 null
因为在它内部,它执行:
if (mmPosition == 0) {
return null;
}
当创建 TextViewUndoRedo
时,会创建一个新的 EditHistory
并将其中的 mmPosition
初始化为 0。
由于您每次都在重新创建对象,mmPosition
始终为 0,并且您返回 null
。
关于android - 如何在android中单击按钮时将撤消和重做操作应用于EditText,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25808701/