我正在尝试在向 EditText 写入或应用效果时应用撤消和重做操作。为此,我已经从这里下载了课程Link https://code.google.com/p/android/issues/detail?id=6458#c123然后我在我的应用程序中像这样使用它。
For Undo
TextViewUndoRedo mTextViewUndoRedo = new TextViewUndoRedo(edtNoteDescription);
mTextViewUndoRedo.undo();
For Redo
TextViewUndoRedo mTextViewUndoRedo = new TextViewUndoRedo(edtNoteDescription);
mTextViewUndoRedo.redo();
但我不知道为什么这段代码不起作用,我已经放置了日志并检查函数 Undo 是否被调用,不幸的是我看到它正在调用这个函数,但它进入了下面的方法。
if (edit == null) {
return;
}
我还尝试过其他一些解决方案,但没有成功,因此,如果有人使用此方法或任何其他方法实现了相同的解决方案,那么请建议一些代码或方法来实现此功能。
Edit
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()
but getPrevious()
回报null
因为在它的内部,它执行:
if (mmPosition == 0) {
return null;
}
When TextViewUndoRedo
被创建,一个新的EditHistory
已创建并在其内部mmPosition
被初始化为0。
由于您每次都重新创建对象,mmPosition
总是 0 并且你得到null
back.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)