Merge "NPE when iterating by character and word in Launcher widgets." into jb-dev

This commit is contained in:
Svetoslav Ganov
2012-06-11 14:06:29 -07:00
committed by Android (Google) Code Review
2 changed files with 16 additions and 16 deletions

View File

@@ -70,20 +70,19 @@ public final class AccessibilityIterators {
implements ComponentCallbacks { implements ComponentCallbacks {
private static CharacterTextSegmentIterator sInstance; private static CharacterTextSegmentIterator sInstance;
private final Context mAppContext; private Locale mLocale;
protected BreakIterator mImpl; protected BreakIterator mImpl;
public static CharacterTextSegmentIterator getInstance(Context context) { public static CharacterTextSegmentIterator getInstance(Locale locale) {
if (sInstance == null) { if (sInstance == null) {
sInstance = new CharacterTextSegmentIterator(context); sInstance = new CharacterTextSegmentIterator(locale);
} }
return sInstance; return sInstance;
} }
private CharacterTextSegmentIterator(Context context) { private CharacterTextSegmentIterator(Locale locale) {
mAppContext = context.getApplicationContext(); mLocale = locale;
Locale locale = mAppContext.getResources().getConfiguration().locale;
onLocaleChanged(locale); onLocaleChanged(locale);
ViewRootImpl.addConfigCallback(this); ViewRootImpl.addConfigCallback(this);
} }
@@ -148,10 +147,9 @@ public final class AccessibilityIterators {
@Override @Override
public void onConfigurationChanged(Configuration newConfig) { public void onConfigurationChanged(Configuration newConfig) {
Configuration oldConfig = mAppContext.getResources().getConfiguration(); Locale locale = newConfig.locale;
final int changed = oldConfig.diff(newConfig); if (!mLocale.equals(locale)) {
if ((changed & ActivityInfo.CONFIG_LOCALE) != 0) { mLocale = locale;
Locale locale = newConfig.locale;
onLocaleChanged(locale); onLocaleChanged(locale);
} }
} }
@@ -169,15 +167,15 @@ public final class AccessibilityIterators {
static class WordTextSegmentIterator extends CharacterTextSegmentIterator { static class WordTextSegmentIterator extends CharacterTextSegmentIterator {
private static WordTextSegmentIterator sInstance; private static WordTextSegmentIterator sInstance;
public static WordTextSegmentIterator getInstance(Context context) { public static WordTextSegmentIterator getInstance(Locale locale) {
if (sInstance == null) { if (sInstance == null) {
sInstance = new WordTextSegmentIterator(context); sInstance = new WordTextSegmentIterator(locale);
} }
return sInstance; return sInstance;
} }
private WordTextSegmentIterator(Context context) { private WordTextSegmentIterator(Locale locale) {
super(context); super(locale);
} }
@Override @Override

View File

@@ -6957,7 +6957,8 @@ public class View implements Drawable.Callback, Drawable.Callback2, KeyEvent.Cal
CharSequence text = getIterableTextForAccessibility(); CharSequence text = getIterableTextForAccessibility();
if (text != null && text.length() > 0) { if (text != null && text.length() > 0) {
CharacterTextSegmentIterator iterator = CharacterTextSegmentIterator iterator =
CharacterTextSegmentIterator.getInstance(mContext); CharacterTextSegmentIterator.getInstance(
mContext.getResources().getConfiguration().locale);
iterator.initialize(text.toString()); iterator.initialize(text.toString());
return iterator; return iterator;
} }
@@ -6966,7 +6967,8 @@ public class View implements Drawable.Callback, Drawable.Callback2, KeyEvent.Cal
CharSequence text = getIterableTextForAccessibility(); CharSequence text = getIterableTextForAccessibility();
if (text != null && text.length() > 0) { if (text != null && text.length() > 0) {
WordTextSegmentIterator iterator = WordTextSegmentIterator iterator =
WordTextSegmentIterator.getInstance(mContext); WordTextSegmentIterator.getInstance(
mContext.getResources().getConfiguration().locale);
iterator.initialize(text.toString()); iterator.initialize(text.toString());
return iterator; return iterator;
} }