2012-08-06 77 views
0

我正在研究Android中的壁紙應用程序,我需要從資產中複製少量圖像到SDCARD位置以獲取應用程序。但是這個過程必須在第一次應用程序運行時完成。將來用戶使用應用程序時不會發生這種情況。 我計劃爲此使用Shared Preference。但沒有獲得成功。只有在應用程序首次在Android中運行時才使用共享首選項來調用方法?

我已經將首選項初始化爲類的私有成員。

private SharedPreferences preferences=null; 
private boolean flagCopy; 
//USING Shared Preferences FOR COPY ASSETS------ 
     if(preferences!=null){ 
      flagCopy = preferences.getBoolean("COPY_ASSETS", DO_NOT_COPY_ASSESTS); 

     }else{ 
      preferences =getPreferences(MODE_PRIVATE); 
      SharedPreferences.Editor editor = preferences.edit(); 
      editor.putBoolean("COPY_ASSETS", COPY_ASSESTS); // value to store 
      editor.commit(); 
      flagCopy = true; 
     } 
     if(flagCopy){//IF FLAG IS FALSE THAN COPY THE IMAGES TO SDCARD FROM RES 
      CopyAssets(); 
     } 
+0

你通過使用這段代碼到達那裏有什麼問題? – Hiral 2012-08-06 05:57:53

+0

我每次運行應用程序時都會收到「首選項」對象爲空。 – 2012-08-06 05:59:52

回答

0

您的偏好對象始終爲空,因此它總是會轉到您正在製作flagcopy = true的第二部分。見下面的代碼

preferences =getPreferences(MODE_PRIVATE); 
    if(preferences!=null){ 
      flagCopy = preferences.getBoolean("COPY_ASSETS", COPY_ASSETS); 


    if(flagcopy == COPY_ASSETS){ 
      SharedPreferences.Editor editor = preferences.edit(); 
      editor.putBoolean("COPY_ASSETS", DO_NOT_COPY_ASSESTS); 
      editor.commit(); 
      flagCopy = true; 
     } 

     if(flagCopy){ 
      CopyAssets(); 
     }