2017-02-13 61 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堆棧而不是維護單個字符串。