【问题标题】:Try to add values to List<Integer>尝试将值添加到 List<Integer>
【发布时间】:2015-10-29 16:24:18
【问题描述】:

当我尝试在我的 onResume() 方法中向我的列表添加一些值时,我收到了这个错误:

    java.lang.RuntimeException: Unable to resume activity {.../...MainActivity}: java.lang.UnsupportedOperationException
        at android.app.ActivityThread.performResumeActivity(ActivityThread.java:3096)
        at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3127)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2482)
        at android.app.ActivityThread.-wrap11(ActivityThread.java)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1345)
        at android.os.Handler.dispatchMessage(Handler.java:102)
        at android.os.Looper.loop(Looper.java:148)
        at android.app.ActivityThread.main(ActivityThread.java:5415)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:725)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:615)
 Caused by: java.lang.UnsupportedOperationException
        at java.util.AbstractList.add(AbstractList.java:404)
        at java.util.AbstractList.add(AbstractList.java:425)
        at de.toeducate.tograde.MainActivity.onResume(MainActivity.java:151)
        at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1258)
        at android.app.Activity.performResume(Activity.java:6237) at android.app.ActivityThread.performResumeActivity(ActivityThread.java:3085)
            at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3127)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2482)
            at android.app.ActivityThread.-wrap11(ActivityThread.java)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1345)
            at android.os.Handler.dispatchMessage(Handler.java:102)
            at android.os.Looper.loop(Looper.java:148)
            at android.app.ActivityThread.main(ActivityThread.java:5415)
            at java.lang.reflect.Method.invoke(Native Method)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:725)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:615)

这是我写的代码:

List<Integer> marks = Collections.emptyList();

    for (int i = 0; i < dataBase.getDataMark().size(); i++) {
        marks.add(dataBase.getDataMark().get(i).getValue());
    }

这是什么意思?

【问题讨论】:

  • 你使用了一个函数(emptyList)。在问这个问题之前你想知道它是做什么的吗?
  • 我投票决定将此问题作为离题结束,因为答案就在文档的第一行。

标签: android database list sqlite


【解决方案1】:

Collections.emptyList(); 返回一个您无法添加的List(因此是UnsupportedOperationException)。

使用

List<Integer> marks = new ArrayList<Integer>();

改为。

【讨论】:

    【解决方案2】:

    Collections.emptyList() 返回AbstractList 的实例。这是行的意思

    Caused by: java.lang.UnsupportedOperationException
        at java.util.AbstractList.add(AbstractList.java:404)
    

    在您的异常堆栈跟踪中。这表示您不能在您的marks 列表中调用add,因为add 未实现。

    而是用一个允许添加元素的类来实例化marks,例如ArrayList

    List<Integer> marks = new ArrayList<Integer>();
    

    除了ArrayListLinkedListAbstractList 的另一个实现,它支持添加元素。大多数情况下,程序员使用ArrayList

    【讨论】:

      猜你喜欢
      • 2014-05-13
      • 2020-02-17
      • 1970-01-01
      • 2019-10-13
      • 2015-05-01
      • 1970-01-01
      • 2022-12-01
      • 2014-02-22
      • 2021-11-05
      相关资源
      最近更新 更多