2017-02-13 64 views
0

我想在按下撤消按钮时恢复以前的文本内容。使用下面的代码,我可以看到如何更改字符串,将新字符串保存到堆栈。为了恢复,我只是弹出堆栈以获取以前的文本。但是这种方法不考虑可跨越的变化。如何追踪文字或其造型或两者的变化?如何保存edittext内容更改列表?

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

回答

0

要保存带有spannable的文本,我们应该从可扩展的字符串中获取charsequence,而不是字符串

0

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

而且当您按下按钮时存储文本将所有这些信息存储到TextPojo中,并保持TextPojo堆栈而不是维护单个字符串。