我正在尝试添加一个名为removeCard
的函数,此函数接收一个字符串数组。此数组长度为48,此数组中的字符串包含卡的名称,即 prince 或 knight 。如果此数组中的String
为null
,则表示没有更多的卡要删除(游戏包含48张卡,但我想删除其中只有2张)。
我的所有卡片都使用密钥SharedPreferences
保存在key1
中。这个函数应该从键中删除阵列中的所有卡(如果有人不小心添加了王子但他还没有解锁它)。
但是,这个函数工作正常,当我返回main3.class
意图时,它显示数组中的卡已从SharedPreferences
键中删除,但当我关闭应用程序并重新打开它时,他们仍然像从未被删除过一样。
这是我的代码:
public static void removeCard(String[] s) {
Set<String> used;
used = prefs.getStringSet("key1", null);
for (String card : s) {
if (card != null)
used.remove(card);
else
break;
}
editor.putStringSet("key1", used);
editor.commit();
Intent k = new Intent(cont, main3.class);
cont.startActivity(k);
}
此外,当您点击array
项目(每个项目是一张卡片)时,ListView
包含要删除的卡片。 result[position]
是卡片名称,cards
包含要移除的值array
:
@Override
public void onClick(View v) {
if (position == 0) { // back button pressed
main2.removeCard(cards);
main2.cont.finish(); // close main2 activity
} else {
Toast.makeText(context, result[position] + " Picked", Toast.LENGTH_LONG).show(); // Toast the card you picked
if (!Arrays.asList(cards).contains(result[position])) { // if card is not already in array, add it.
cards[count] = result[position];
count++;
}
}
}
这就是我获取SharedPreferences
编辑器的方式。
public static SharedPreferences prefs;
public static SharedPreferences.Editor editor;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
cont = this;
listView = (ListView) findViewById(R.id.list);
listView.setAdapter(new CustomAdapter(main2.this, mDrawableName, mDrawableImg, n));
prefs = getSharedPreferences("MyPrefs", 0);
editor = prefs.edit();
}
另外,要显示我使用的其他活动中的卡片:
SharedPreferences pref = getSharedPreferences("MyPrefs", Context.MODE_PRIVATE);
Set<String> cards = pref.getStringSet("key1", null);
tv1.setText("Available cards: " + cards);