2016-10-21 5 views
3

아시다시피 안드로이드 애플리케이션을 프로그래밍 할 때 클래스 유형을 전달하는 것이 중요합니다. 한 가지 간단한 예는 인 텐트를 사용하는 것입니다. 내가 재부팅 후, 예를 들어, 나중에 사용하기 위해 파일에 클래스 유형의 정보를 저장할 수있는 경우 클래스 정보를 파일에 저장하여 나중에 사용하기 위해

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 i = new Intent(this, restoredClassInfoFromFile); 

어떻게 이런 일을 할 수 있습니까? Class<?>은 개체가 아니기 때문에 어디에서 시작해야할지 모르겠습니다.

[편집] .class는 개체이기도하므로 개체를 저장하는 것처럼 저장할 수 있습니다.

+2

당신이 뭔가를 찾고있다 파일에서 사용할 수 here 그리고 읽기 개체를 파일에 기록하여 사용자 정의 클래스입니다 이름 (문자열) – zombie

답변

2

이 여기 SaveStateObjectOutputStream를 사용하여 수는

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

+0

미안하지만, 내 나쁜 .. Woks는 매력을 좋아해! 대단히 감사합니다!! – Jenix

+0

나는 .class가 매우 부끄럽다는 것을 결코 생각하지 못했습니다. 당신 덕분에, 지금 그것이 의미하는 바를 이해합니다. 코드는 지금까지 내 애플 리케이션에서 큰 작품, 큰 감사를 다시! – Jenix

관련 문제