2

共有設定からロードされるリストビューがあります。ユーザーが削除をクリックすると、リストから削除され、設定が細断処理されます。私の問題は、特定のアイテムが共有設定から削除されないことです。これは、コードの下で使用したためです。

SharedPreferences settings = getSharedPreferences(
OptionsActivity.PREFS_NAME, 0);
int deviceSize = settings.getInt("deviceSize", 0);
SharedPreferences.Editor editor = settings.edit();
String deviceName = items.get(index);
editor.remove(deviceName + String.valueOf(items.get(index)));
editor.remove("deviceName" + String.valueOf(index));
int deviceid = settings.getInt("deviceId"+String.valueOf(items.get(index)),0);
editor.remove("deviceId" + String.valueOf(deviceid));
editor.putInt("deviceSize", deviceSize - 1);
editor.commit();

このコードでは、deviceSize-1 のみが機能しているため、リストから削除されたように見えますが、共有された設定ファイルを見るとそうではありません。私の共有設定ファイルは以下のとおりです。

   <?xml version='1.0' encoding='utf-8' standalone='yes' ?>
   <map>
   <string name="deviceName1">APPLE</string>//delete when click on delete
   <int name="deviceId1" value="0" /> //delete when click on delete
   <int name="deviceSize" value="1" /> //decrease by one when item deleted
   </map>

ユーザーが削除をクリックすると、これらの 3 行の設定ファイルを削除したいと考えています。行全体を削除するには? リストには名前 (APPLE) のみが表示されます。

4

2 に答える 2

5

行に間違いがあります:

editor.remove("deviceId" + String.valueOf(deviceid));

そのはず

editor.remove("deviceId" + String.valueOf(index)); 

たぶん、deviceSizeキーも削除したいでしょう:

editor.remove("deviceSize");

コミットする前に。

あなたのコードはあまり明確ではありません。読みやすくします。

于 2012-11-15T07:50:51.940 に答える