【问题标题】:java.util.NoSuchElementException occurs发生 java.util.NoSuchElementException
【发布时间】:2016-04-10 08:39:36
【问题描述】:

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

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

【问题讨论】:

    标签: java android arrays sharedpreferences nosuchelementexception


    【解决方案1】:

    添加项目后,您必须 commit() 您的共享偏好。

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

    【讨论】:

    • 它猜它有效。但是现在我的元素没有被添加到列表视图中。列表视图仍然为空。
    • 这样我们刚刚处理了异常。现在的问题是,不知何故你没有在 sn.sn 中获取数据。只需添加一个断点并检查您是否从首选项中获取值。
    • 所有错误都消失了!我现在得到了我想要的。感谢您的帮助!
    • 很高兴听到这个消息。快乐编码:)
    猜你喜欢
    • 2018-02-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多