summaryrefslogtreecommitdiffstats
path: root/chips/src
diff options
context:
space:
mode:
authorMindy Pereira <mindyp@google.com>2012-05-24 13:21:59 -0700
committerMindy Pereira <mindyp@google.com>2012-05-24 13:37:48 -0700
commit441b417f05bf807429281e6ad7cd43c9bdba87a6 (patch)
treefffcdadb685d7c934de24d263b30597ffbfa304a /chips/src
parent9ec75ceffe2f2b08484b8772ab429f8998110228 (diff)
downloadandroid_frameworks_ex-441b417f05bf807429281e6ad7cd43c9bdba87a6.tar.gz
android_frameworks_ex-441b417f05bf807429281e6ad7cd43c9bdba87a6.tar.bz2
android_frameworks_ex-441b417f05bf807429281e6ad7cd43c9bdba87a6.zip
Null check; back behavior
Since its possible there was no chip formed for an address, it is possible there is no address in some part of the inAddresses array, so build it up as an arraylist so we don't have null spots. Fixes b/6555471 NPE in com.android.ex.chips.RecipientAlternatesAdapter.getMatchingRecipients Fixes b/6556107 when contact chip is selected back button should dismiss the popup and unselct the chip Change-Id: If74b13ccc5f51aafc3638817b5fbef54cd57548c
Diffstat (limited to 'chips/src')
-rw-r--r--chips/src/com/android/ex/chips/RecipientAlternatesAdapter.java11
-rw-r--r--chips/src/com/android/ex/chips/RecipientEditTextView.java12
2 files changed, 13 insertions, 10 deletions
diff --git a/chips/src/com/android/ex/chips/RecipientAlternatesAdapter.java b/chips/src/com/android/ex/chips/RecipientAlternatesAdapter.java
index e3ef6cd..553890e 100644
--- a/chips/src/com/android/ex/chips/RecipientAlternatesAdapter.java
+++ b/chips/src/com/android/ex/chips/RecipientAlternatesAdapter.java
@@ -31,6 +31,7 @@ import android.widget.TextView;
import com.android.ex.chips.Queries.Query;
+import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
@@ -55,7 +56,7 @@ public class RecipientAlternatesAdapter extends CursorAdapter {
private Query mQuery;
public static HashMap<String, RecipientEntry> getMatchingRecipients(Context context,
- String[] inAddresses) {
+ ArrayList<String> inAddresses) {
return getMatchingRecipients(context, inAddresses, QUERY_TYPE_EMAIL);
}
@@ -69,20 +70,20 @@ public class RecipientAlternatesAdapter extends CursorAdapter {
* @return HashMap<String,RecipientEntry>
*/
public static HashMap<String, RecipientEntry> getMatchingRecipients(Context context,
- String[] inAddresses, int addressType) {
+ ArrayList<String> inAddresses, int addressType) {
Queries.Query query;
if (addressType == QUERY_TYPE_EMAIL) {
query = Queries.EMAIL;
} else {
query = Queries.PHONE;
}
- int addressesSize = Math.min(MAX_LOOKUPS, inAddresses.length);
+ int addressesSize = Math.min(MAX_LOOKUPS, inAddresses.size());
String[] addresses = new String[addressesSize];
StringBuilder bindString = new StringBuilder();
// Create the "?" string and set up arguments.
for (int i = 0; i < addressesSize; i++) {
- Rfc822Token[] tokens = Rfc822Tokenizer.tokenize(inAddresses[i].toLowerCase());
- addresses[i] = (tokens.length > 0 ? tokens[0].getAddress() : inAddresses[i]);
+ Rfc822Token[] tokens = Rfc822Tokenizer.tokenize(inAddresses.get(i).toLowerCase());
+ addresses[i] = (tokens.length > 0 ? tokens[0].getAddress() : inAddresses.get(i));
bindString.append("?");
if (i < addressesSize - 1) {
bindString.append(",");
diff --git a/chips/src/com/android/ex/chips/RecipientEditTextView.java b/chips/src/com/android/ex/chips/RecipientEditTextView.java
index 39a481b..f0a813b 100644
--- a/chips/src/com/android/ex/chips/RecipientEditTextView.java
+++ b/chips/src/com/android/ex/chips/RecipientEditTextView.java
@@ -992,8 +992,9 @@ public class RecipientEditTextView extends MultiAutoCompleteTextView implements
*/
@Override
public boolean onKeyPreIme(int keyCode, KeyEvent event) {
- if (keyCode == KeyEvent.KEYCODE_BACK) {
+ if (keyCode == KeyEvent.KEYCODE_BACK && mSelectedChip != null) {
clearSelectedChip();
+ return true;
}
return super.onKeyPreIme(keyCode, event);
}
@@ -1034,6 +1035,7 @@ public class RecipientEditTextView extends MultiAutoCompleteTextView implements
return true;
}
}
+ break;
}
return super.onKeyUp(keyCode, event);
}
@@ -2281,12 +2283,12 @@ public class RecipientEditTextView extends MultiAutoCompleteTextView implements
if (mRemovedSpans != null) {
originalRecipients.addAll(mRemovedSpans);
}
- String[] addresses = new String[originalRecipients.size()];
+ ArrayList<String> addresses = new ArrayList<String>();
RecipientChip chip;
for (int i = 0; i < originalRecipients.size(); i++) {
chip = originalRecipients.get(i);
if (chip != null) {
- addresses[i] = createAddressText(chip.getEntry());
+ addresses.add(createAddressText(chip.getEntry()));
}
}
HashMap<String, RecipientEntry> entries = RecipientAlternatesAdapter
@@ -2346,12 +2348,12 @@ public class RecipientEditTextView extends MultiAutoCompleteTextView implements
// chip.
final ArrayList<RecipientChip> originalRecipients =
(ArrayList<RecipientChip>) params[0];
- String[] addresses = new String[originalRecipients.size()];
+ ArrayList<String> addresses = new ArrayList<String>();
RecipientChip chip;
for (int i = 0; i < originalRecipients.size(); i++) {
chip = originalRecipients.get(i);
if (chip != null) {
- addresses[i] = createAddressText(chip.getEntry());
+ addresses.add(createAddressText(chip.getEntry()));
}
}
HashMap<String, RecipientEntry> entries = RecipientAlternatesAdapter