summaryrefslogtreecommitdiff
path: root/core/java/android
diff options
context:
space:
mode:
authorAdam Powell <adamp@google.com>2012-08-24 12:43:41 -0700
committerAdam Powell <adamp@google.com>2012-08-24 14:51:40 -0700
commita798170f2abe198f806b12dd904830bc25257525 (patch)
tree53a27cfefee8fc23659af6bed1376a753099707e /core/java/android
parent1552586283f329253edc4786a6cf40c5bb69ea36 (diff)
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
Diffstat (limited to 'core/java/android')
-rw-r--r--core/java/android/widget/AbsListView.java10
1 files changed, 10 insertions, 0 deletions
diff --git a/core/java/android/widget/AbsListView.java b/core/java/android/widget/AbsListView.java
index 61c942d15e3b..423135f33f97 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<ListAdapter> 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<ListAdapter> 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?