需求: 实现文本的撤销操作。
主要的代码:
mEditText = ((EditText) findViewById(R.id.editText));
mPerformEdit = new PerformEdit(mEditText){
@Override
protected void onTextChanged(Editable s) {
//文本发生改变,可以是用户输入或者是EditText.setText触发.(setDefaultText的时候不会回调)
super.onTextChanged(s);
}
}; mPerformEdit.setDefaultText("这是初始值,不能撤销的值");
}
监听操作:
mPerformEdit.undo() 撤销
mPerformEdit.redo() 复原
mPerformEdit.clearHistory() 清空历史
Demo:
public class MainActivity extends AppCompatActivity {
private EditText mEditText;
private PerformEdit mPerformEdit;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mEditText = ((EditText) findViewById(R.id.editText));
mPerformEdit = new PerformEdit(mEditText){
@Override
protected void onTextChanged(Editable s) {
//文本发生改变
super.onTextChanged(s);
}
};
mPerformEdit.setDefaultText("default");
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_editor,menu);
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int itemId = item.getItemId();
if(itemId ==R.id.action_undo){
mPerformEdit.undo();//撤销操作
return true;
}else if(itemId == R.id.action_redo){
mPerformEdit.redo();//复原
return true;
}else if(itemId == R.id.action_clear){
mPerformEdit.clearHistory();
return true;
}
return super.onOptionsItemSelected(item);
}}