Я знаю, что есть несколько примеров этого, но я попробовал многие из них, и я не смог исправить свою проблему. Я хочу удалить ArrayList из моих общих настроек.
Я создаю свой ArrayList на общих настройкахв first активность:
public void saveArrayList(ArrayList<String> list){
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
SharedPreferences.Editor editor = prefs.edit();
Gson gson = new Gson();
String json = gson.toJson(list);
editor.putString("testShared", json);
editor.apply(); // This line is IMPORTANT !!!
}
На моей second активности я получаю свой массив следующим образом:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_add_food_basket);
alreadyAddedFoodtest = (ListView) findViewById(R.id.alreadyAddedList);
registerForContextMenu(alreadyAddedFoodtest);
getArrayList();
}
public ArrayList<String> getArrayList(){
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(AddFoodBasket.this);
Gson gson = new Gson();
String json = prefs.getString("testShared", null);
Type type = new TypeToken<ArrayList<String>>() {}.getType();
itemsAdded=gson.fromJson(json, type);
return itemsAdded;
}
И, наконец, я удаляюэлементы массивов в моей секунде активности здесь:
public boolean onContextItemSelected(MenuItem item){
if(item.getItemId()==R.id.delete){
AddFood add=new AddFood();
count--;
countTextbasket(count);
Toast.makeText(getApplicationContext(),"Διαγράφηκε"+item,Toast.LENGTH_LONG).show();
AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) item.getMenuInfo(); // init the info the position from
itemsAdded.remove(info.position); // remove the item from the list
addedAdapter.notifyDataSetChanged();//updating the adapter
SharedPreferences preferences = getSharedPreferences("testShared", MODE_PRIVATE);
preferences.edit().clear().apply();
}else{
return false;
}
return true;
}
Проблема в том, что
SharedPreferences preferencesgetSharedPreferences("testShared", MODE_PRIVATE);
preferences.edit().clear().apply();
Не работает, когда яснова откройте мою деятельность, список снова там.