我正在尝试制作收藏夹列表。
我创建了一个存储真值的 SharedPreferences 类,然后我需要使用所有真值。
这是我的课:
public class Baham_SharedPreferences
{
private SharedPreferences prefs;
private static final String NAME = "pref";
public SharedPreferences(Context context) {
prefs = context.getSharedPreferences(NAME, Context.MODE_PRIVATE);
}
public boolean getState(String key) {
return prefs.getBoolean(key, false);
}
public void setState(String key, boolean value){
Editor editor = prefs.edit();
editor.putBoolean(key, value);
editor.commit();
}
public void getall()
{
Favorite favorite=new Favorite(); //Favorite is a fragment class
favorite.fav_list=new ArrayList<String>();
Map<String,?> keys = prefs.getAll();
int i=0;
for(Map.Entry<String,?> entry : keys.entrySet())
{
if (entry.getValue().toString()=="true")
{
favorite.fav_list.add(entry.getKey());
Log.d("true value", favorite.fav_list.get(i));
i++;
}
}
}
}
通过 getall() 我尝试ArrayList<String> fav_list;
在从 Fragment 扩展的声明收藏夹类中声明的新公共。
一切都好到这一步!,但是在最喜欢的片段类中,我的fav_list
ArrayList 还为空-我以前使用过这种方式(但在活动中,而不是片段中)并且工作正常,但在片段类中不起作用;
首先,我调用 preferences.getall() 然后使用 ArrayList fav_list 但返回此错误:
E/AndroidRuntime(10015): FATAL EXCEPTION: main
E/AndroidRuntime(10015): java.lang.NullPointerException
E/AndroidRuntime(10015): at baham.slidingmenu.Favorite.onCreateView(Favorite.java:52)
E/AndroidRuntime(10015): at android.app.Fragment.performCreateView(Fragment.java:1695)
E/AndroidRuntime(10015): at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:885)
E/AndroidRuntime(10015): at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1057)
E/AndroidRuntime(10015): at android.app.BackStackRecord.run(BackStackRecord.java:682)
E/AndroidRuntime(10015): at android.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1435)
现在!,将 ArrayList 从一个类(例如:(public class SharedPreferencesn {...}
不从任何东西扩展))传递给一个Fragment class
?
(For Example via : bundle.putStringArrayList(key, value) , intent.putExtras and ... )
编辑 :
所以,我试试这个链接。