取出位置我的代碼中遇到錯誤:錯誤與書籤
java.util.ConcurrentModificationException
at java.util.HashMap$HashIterator.nextEntry(HashMap.java:787)
at java.util.HashMap$KeyIterator.next(HashMap.java:814)
at openprojects.atvt.ui.VideoAdapter.getLiveTvBookmarks(VideoAdapter.java:107)
at openprojects.atvt.ui.MainActivity.switchRowsFragment(MainActivity.java:323)
at openprojects.atvt.ui.MainActivity.setPosition(MainActivity.java:378)
at openprojects.atvt.ui.MainActivity.access$500(MainActivity.java:48)
at openprojects.atvt.ui.MainActivity$4.onRequestChildFocus(MainActivity.java:268)
at android.support.v17.leanback.widget.BrowseFrameLayout.requestChildFocus(BrowseFrameLayout.java:124)
at android.view.ViewGroup.requestChildFocus(ViewGroup.java:740)
at android.view.ViewGroup.requestChildFocus(ViewGroup.java:740)
at android.view.ViewGroup.requestChildFocus(ViewGroup.java:740)
at android.support.v7.widget.RecyclerView.requestChildFocus(RecyclerView.java:2106)
at android.view.ViewGroup.requestChildFocus(ViewGroup.java:740)
at android.view.View.handleFocusGainInternal(View.java:5471)
at android.view.View.requestFocusNoSearch(View.java:8476)
at android.view.View.requestFocus(View.java:8455)
at android.view.ViewRootImpl$ViewPostImeInputStage.processKeyEvent(ViewRootImpl.java:4203)
at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:4089)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3642)
at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3695)
at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3661)
at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:3787)
at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3669)
at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:3844)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3642)
at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3695)
at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3661)
at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3669)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3642)
at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3695)
at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3661)
at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:3820)
at android.view.ViewRootImpl$ImeInputStage.onFinishedInputEvent(ViewRootImpl.java:3981)
at android.view.inputmethod.InputMethodManager$PendingEvent.run(InputMethodManager.java:2253)
at android.view.inputmethod.InputMethodManager.invokeFinishedInputEventCallback(InputMethodManager.java:1874)
at android.view.inputmethod.InputMethodManager.finishedInputEvent(InputMethodManager.java:1865)
at android.view.inputmethod.InputMethodManager$ImeInputEventSender.onInputEventFinished(InputMethodManager.java:2230)
at android.view.InputEventSender.dispatchInputEventFinished(InputEventSender.java:141)
at android.os.MessageQueue.nativePollOnce(Native Method)
at android.os.MessageQueue.next(MessageQueue.java:323)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5417)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
此錯誤是在這個片段代碼
public List<LiveTvProgram> getLiveTvBookmarks() {
String name = context.getString(R.string.preferences_bookmarks_live_tv);
Set<String> bookmarks = preferenceHelper.getStringSet(name, name);
Set<String> temp_bookmarks = bookmarks;
ArrayList<LiveTvProgram> bookmarkList = new ArrayList<>();
for (String title : bookmarks) {
for (LiveTvProgram program : ChannelsManager.getInstance().getSelectedPrograms()) {
if (program.getTitle().equals(title)) {
if (program.hasEnded()) {
temp_bookmarks.remove(title);
} else {
bookmarkList.add(program);
}
break;
}
}
}
if (temp_bookmarks.size() != bookmarks.size()) {
preferenceHelper.putStringSet(name, name, temp_bookmarks);
}
return bookmarkList;
}
happend這就是爲什麼我得到它。當我添加名爲onAIR(當前在線播放)的LiveProgram時,它確定。我可以去書籤部分,但是當程序結束時,必須從書籤中刪除,但是我得到了這樣的錯誤。
我得到錯誤的:
if (program.hasEnded()) {
temp_bookmarks.remove(title);
} else {
bookmarkList.add(program);
}
當你迭代它時你不能修改'Collection' – Jens
你能說更多嗎? – Genehme
書籤和temp_Bookmarks是同一個對象。 – Jens