如何保存edittext内容更改列表?

时间:2017-02-13 11:23:05

标签: android

我想按下撤消按钮恢复以前的文本内容。使用下面的代码,我可以看到String如何更改,将新字符串保存到堆栈。为了恢复我只是弹出堆栈来获取以前的文本。但是,该方法不考虑spannable的任何变化。如何跟踪文本或其样式或两者的变化?

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);
  }

2 个答案:

答案 0 :(得分:0)

为此,您需要创建自定义textPojo,其中包括您要存储的所有文本属性,如typeFace,文本,文本样式,文本大小,文本颜色,文本对齐等,

当您按下按钮存储文本时,将所有这些信息存储到TextPojo并维护TextPojo堆栈,而不是维护单个String。

答案 1 :(得分:0)

要使用spannable保存文本,我们应该从spannable而不是字符串

中获取charsequence