我使用共享首选项在类中存储了一个整数数组。该项目以我想要的方式存储。
但是当我从另一个类访问它时,应用程序崩溃,Logcat显示java.util.NoSuchElementException。我无法理解背后的原因。
这是我存储数组的方式。
SharedPreferences prefs = getPreferences(MODE_MULTI_PROCESS);
StringBuilder str = new StringBuilder();
for (int i = 0; i < MyAdaptertwo.rowitems.size(); i++) {
str.append(MyAdaptertwo.rowitems.get(i).no).append(",");
}
prefs.edit().putString("no", str.toString());
这是我检索它的方式 -
SharedPreferences prefs = getPreferences(MODE_MULTI_PROCESS);
String savedno = prefs.getString("no", "");
StringTokenizer sn = new StringTokenizer(savedno, ",");
for (int i = 0; i < Integer.parseInt(validtotal_order); i++) {
list_order item = new list_order(st.nextToken(),sc.nextToken(),sn.nextToken());//Error
rowitems.add(item);
Logcat在我评论为错误的行中显示错误。
答案 0 :(得分:0)
在您添加项目后,您必须提交()您的共享偏好。
prefs.edit().putString("no", str.toString()).commit();
除非您提交,否则添加的数据不会保存在共享首选项中。
另外,最好使用hasMoreElements()检查它是否包含更多元素。
for (int i = 0; i < Integer.parseInt(validtotal_order); i++) {
if(sn.hasMoreElements())
{
list_order item = new list_order(st.nextToken(),sc.nextToken(),sn.nextToken());//Error
rowitems.add(item);
}
}