java.util.NoSuchElementException 发生

java.util.NoSuchElementException occurs

我使用共享首选项将整数数组存储在 class 中。该项目正在按照我想要的方式存储。

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

您必须在添加项目后提交()您的共享首选项。

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