我试图制作收藏列表。我有这个名为Animal的类,另一个叫做收藏夹。收藏夹arraylist在“收藏夹”类中创建。我可以从Animal with
访问收藏夹arraylistpublic static Favorites addfavorite = new Favorites();
并将商品添加到优惠列表。
作为从Animal类添加到收藏夹列表的项目,我需要保存此arraylist。我尝试使用SharedPreferences执行此操作。它几乎可以工作。添加项目并完全关闭并重新打开应用程序后,我遇到以下问题。
问题:
如果我打开应用程序并转到Animal类,而不先打开“收藏夹”类并查看之前添加的项目(因此尚未调用“{1}}收藏夹方法”,如果我添加或者不要在收藏夹列表中添加新项目(没关系)当我在Animal类时,当我打开“收藏夹”类时,如果添加了新项目,则删除先前添加的项目并替换为新添加的项目如果不是,列表变空。 (我不想要这个我需要同时拥有新旧项目)但是如果我首先打开收藏夹类并看到之前添加的项目(因此要为'收藏夹'调用'OnCreate()'方法)然后去对于Animal类并添加新项目,新项目和旧项目都列在“收藏夹”中。 (这就是我想要实现的目标)
如何解决此问题?
编辑:动物的一些代码
OnCreate()
favoritesanimal是我创建的任意arraylist。它与Favorite类或者热门列表无关,它实际上是无用的。所以onPause()和onResume方法目前什么都不做。
这是来自收藏夹的代码(注意我在两个类中都使用相同的sharedpreferences属性)
@Override
protected void onPause() {
// TODO Auto-generated method stub
prefs = getSharedPreferences(prefName, MODE_PRIVATE);
SharedPreferences.Editor editor = prefs.edit();
editor.putStringSet(PREFS_NAME,
new HashSet<String>(addfavorite.getFavorites()));
editor.commit();
super.onPause();
}
@Override
protected void onResume() {
// TODO Auto-generated method stub
prefs = getSharedPreferences(prefName, MODE_PRIVATE);
favoritesanimal = new ArrayList<String>(prefs.getStringSet(PREFS_NAME,
new HashSet<String>()));
super.onResume();
}
@Override
protected void onSaveInstanceState(Bundle outState) {
// TODO Auto-generated method stub
super.onSaveInstanceState(outState);
outState.putStringArrayList(PREFS_NAME, addfavorite.getFavorites());
}
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onRestoreInstanceState(savedInstanceState);
if (savedInstanceState != null
&& savedInstanceState.containsKey(PREFS_NAME)) {
favoritesanimal = savedInstanceState.getStringArrayList(PREFS_NAME);
}
}
答案 0 :(得分:0)
我认为,当您使用addfavorite.getFavorites()
时,此方法返回空列表。当你进入Favorites类时,调用Animals类中的onPause()
方法并重写你的首选项。