2012-04-17 18 views
1

私のアプリケーションを再インストールすると、私のSharedPreferencesエントリがまだ作成されていないにもかかわらず、if文内のコードにアクセスしています。私はeclipseでエミュレータを使用していますが、データを再インストールする以外の方法でクリアする必要はありますか?ありがとう再インストール時にSharedPreferencesエントリがクリアされないのはなぜですか?

prefs = getSharedPreferences("appData", 0); 
     Gson gson = new Gson(); 
     String gsonStr = prefs.getString("playerString", null); 

     if(gsonStr != null) 
     { 
      //This code is being accessed on the apps first onCreate() call prior to being reinstalled 
      Player[] tempArray = gson.fromJson(gsonStr, Player[].class); 
      Log.d("First Player", "" + tempArray[0]); 
     } 

protected void onPause() 
{ 
    super.onPause(); 
    if(savedPlayers != null) 
    { 
     Gson gson = new Gson(); 
     String gsonStr = gson.toJson(savedPlayers.toArray()); 

     prefs = getSharedPreferences("appData", 0); 
     SharedPreferences.Editor editor = prefs.edit(); 
     //editor().clear(); 
     Log.d("GSONString",gson.toString()); 
     editor.putString("playerString", gsonStr); 
     editor.putInt("ArraySize", savedPlayers.size()); 
     editor.commit(); 
    } 
} 

答えて

5

ほとんどの場合、アプリは単に再インストールされています。データを消去するには、まずアプリをアンインストールする必要があります。再インストールしてもデータは実際に消去されません。エミュレータでは、実際にエミュレータを実行するときにすべてのユーザーデータを消去するランタイムオプションがありますが、アプリを実行するたびに実行されるとは思いません。 eclipseを使用している場合は、このオプションをアプリケーションの実行コンフィギュレーションで設定できます。

、エミュレータ内部からそれを行う設定 - >アプリケーション - >管理アプリケーション - >あなたのAPP->明確なデータ

+0

RunConfigurations>ワイプユーザーデータがジョブを処理します。 – Deco

+0

Achは文がまだ私を過ぎ去らせてしまうのであれば、何か気になるものでなければなりません。 – Deco

+0

どのようなAPIレベルのエミュレータを使用していますか? – ootinii

3

共有好みとsqliteのDBを再インストールで削除されますdoesntのに移動します。それらを削除するには、に行きます。設定 - >アプリケーション - >アプリケーションの管理 - >アプリケーションをクリックします。 - >エミュレータで "データ消去"をクリックします。これにより、保存されたデータが消去されます。

+0

設定はどこにありますか? – Deco

+0

ああ、あなたはエミュレータを意味します。私はEclipseで探していた。 – Deco

+0

ホーム画面で、アプリケーションリストを表示しているボタンをクリックします。それらのうちの1つは設定です – Akhil

関連する問題