2011-11-29 103 views
1

是否有可能,是由Object.ToString(創建一個字符串轉換)回到原來的對象,即:將字符串轉換爲對象

  public boolean dispatchKeyEvent (KeyEvent event) {  
       appendLog(event.toString()); 
       return super.dispatchKeyEvent(event);  
      } 

appent日誌將記錄每一個KeyEvent的一個字符串在新行。日誌記錄後,我想運行記錄的keyevents

是否有可能將字符串記錄的keyevents轉換爲KeyEvent對象?

回答

3

只有toString()包含所有必要的事件信息。如果它只是一個哈希碼,當然不是。如果相關信息可用,則需要解析它,並使用其中一個KeyEvent構造函數,並希望在內部沒有任何內容沒有在toString中反映出來。似乎對我來說粗略。

如果您需要存儲它,它的Parcelable,這可能會有所幫助。

您仍然在展示的代碼段中有事件,沒有實際的用例,很難知道您要做什麼。

+0

我添加了函數,即時記錄文本文件中的keyevents,然後我想從文本文件中讀取keyevents並「回覆」它們 –

+0

@MikeG爲什麼?你想建立一個機器人嗎?那些已經存在。 –

+0

我試圖建立記錄器,記錄用戶事件,如點擊,移動,擊鍵等...我不知道什麼是機器人,如果我試圖做的事情已經存在,你可以提供一些鏈接。謝謝! –

2

是的,它可能但可能不是你想的方式。爲了做到這一點,所有與KeyEvent相關的數據都必須轉換爲文本形式,然後解析並創建一個新的KeyEvent。另一個問題是KeyEvent缺少設置器來重新創建內部狀態,因此要完成返回轉換,您必須創建一個子類或找到一種使用Parcelable轉換分析字符串的方法。

1

event.toString()返回事件對象的字符串表示形式(實際上會返回與引用相關的字符串)。

您不能使用轉換重新創建KeyEvent對象。

3

一般來說,沒有。該字符串將不包含足夠的信息來重建原始對象。當然,如果編碼足夠的信息在toString()返回的字符串中,你可以重建對象 - 例如,你可以序列化一個對象到一個XML - 一個字符串,然後從那個XML重建對象的起源它。看看JAXB

0

我懷疑toString()包含對象的所有信息。你需要序列化機制來恢復對象。在Android中,我會使用JSONObject。