2016-10-21 59 views
3

如您所知,在編寫Android應用程序時,傳遞類類型非常重要。 一個簡單的例子是使用意圖。將類類型信息保存到文件以供將來使用

Intent i = new Intent(this, MyActivity.class); 

所以它會在某些情況下,一種有用的,如果我能在類的類型信息保存到以後使用的文件,例如,重新啓動後。

void saveClassTypeInfo(Class<?> classType, String filename) { 

String str = null; 

// Some job with classType 

FileOutputStream fos = null; 
    try { 
     fos = new FileOutputStream(filename); 
     fos.write(str.getBytes()); 
     fos.close(); 
    } catch (Exception e) { 
    } 
} 

如果我能像上面以某種方式保存,然後我就可以把它恢復到一個Intent這樣的未來。

Intent i = new Intent(this, restoredClassInfoFromFile); 

我該如何做到這樣的工作?由於Class<?>不是一個對象,我不知道從哪裏開始。

[編輯] .class也是一個對象,所以我們可以像保存對象一樣保存它。

+2

你尋找的東西像創建一個類一個名字(字符串) – zombie

回答

2

這是可能的使用ObjectOutputStream這裏SaveState是你的自定義類

public static void saveData(SaveState instance){ 
ObjectOutput out; 
try { 
    File outFile = new File(Environment.getExternalStorageDirectory(), "appSaveState.ser"); 
    out = new ObjectOutputStream(new FileOutputStream(outFile)); 
    out.writeObject(instance); 
    out.close(); 
} catch (Exception e) {e.printStackTrace();} 
} 

public static SaveState loadData(){ 
ObjectInput in; 
SaveState ss=null; 
try { 
    in = new ObjectInputStream(new FileInputStream("appSaveState.ser"));  
    ss=(SaveState) in.readObject(); 
    in.close(); 
} catch (Exception e) {e.printStackTrace();} 
return ss; 
} 

完全教程寫從文件文件中提供here 和閱讀對象here

+0

對不起,我的壞..炒鍋喜歡魅力!太感謝了!! – Jenix

+0

我從來沒有想過.class是一個對象,非常慚愧。感謝你,現在我明白它的意思了。該代碼迄今爲止在我的應用程序中效果很好,再次非常感謝! – Jenix

相關問題