From a798170f2abe198f806b12dd904830bc25257525 Mon Sep 17 00:00:00 2001 From: Adam Powell Date: Fri, 24 Aug 2012 12:43:41 -0700 Subject: [PATCH] More detailed error reporting for AbsListView/CHOICE_MODE_MULTIPLE_MODAL Throw a more descriptive exception when an app has not set a multi-choice mode listener and an item becomes checked. Change-Id: Ib682fd7a467a3751bb81dacbd22676aaa4407d36 --- core/java/android/widget/AbsListView.java | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/core/java/android/widget/AbsListView.java b/core/java/android/widget/AbsListView.java index 61c942d15e3b6..423135f33f971 100644 --- a/core/java/android/widget/AbsListView.java +++ b/core/java/android/widget/AbsListView.java @@ -973,6 +973,12 @@ public abstract class AbsListView extends AdapterView implements Te // Start selection mode if needed. We don't need to if we're unchecking something. if (value && mChoiceMode == CHOICE_MODE_MULTIPLE_MODAL && mChoiceActionMode == null) { + if (mMultiChoiceModeCallback == null || + !mMultiChoiceModeCallback.hasWrappedCallback()) { + throw new IllegalStateException("AbsListView: attempted to start selection mode " + + "for CHOICE_MODE_MULTIPLE_MODAL but no choice mode callback was " + + "supplied. Call setMultiChoiceModeListener to set a callback."); + } mChoiceActionMode = startActionMode(mMultiChoiceModeCallback); } @@ -5945,6 +5951,10 @@ public abstract class AbsListView extends AdapterView implements Te mWrapped = wrapped; } + public boolean hasWrappedCallback() { + return mWrapped != null; + } + public boolean onCreateActionMode(ActionMode mode, Menu menu) { if (mWrapped.onCreateActionMode(mode, menu)) { // Initialize checked graphic state?