发生java.util.NoSuchElementException

时间:2016-01-06 09:49:20

标签: java android arrays sharedpreferences nosuchelementexception

我使用共享首选项在类中存储了一个整数数组。该项目以我想要的方式存储。

但是当我从另一个类访问它时,应用程序崩溃,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在我评论为错误的行中显示错误。

1 个答案:

答案 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);
       }
    }