Merge "Fix NPEs in detached views." into honeycomb
This commit is contained in:
@@ -4810,7 +4810,10 @@ public abstract class AbsListView extends AdapterView<ListAdapter> implements Te
|
||||
if (mFiltered && mPopup != null && mPopup.isShowing()) {
|
||||
if (event.getAction() == KeyEvent.ACTION_DOWN
|
||||
&& event.getRepeatCount() == 0) {
|
||||
getKeyDispatcherState().startTracking(event, this);
|
||||
KeyEvent.DispatcherState state = getKeyDispatcherState();
|
||||
if (state != null) {
|
||||
state.startTracking(event, this);
|
||||
}
|
||||
handled = true;
|
||||
} else if (event.getAction() == KeyEvent.ACTION_UP
|
||||
&& event.isTracking() && !event.isCanceled()) {
|
||||
|
||||
@@ -607,10 +607,16 @@ public class AutoCompleteTextView extends EditText implements Filter.FilterListe
|
||||
// special case for the back key, we do not even try to send it
|
||||
// to the drop down list but instead, consume it immediately
|
||||
if (event.getAction() == KeyEvent.ACTION_DOWN && event.getRepeatCount() == 0) {
|
||||
getKeyDispatcherState().startTracking(event, this);
|
||||
KeyEvent.DispatcherState state = getKeyDispatcherState();
|
||||
if (state != null) {
|
||||
state.startTracking(event, this);
|
||||
}
|
||||
return true;
|
||||
} else if (event.getAction() == KeyEvent.ACTION_UP) {
|
||||
getKeyDispatcherState().handleUpEvent(event);
|
||||
KeyEvent.DispatcherState state = getKeyDispatcherState();
|
||||
if (state != null) {
|
||||
state.handleUpEvent(event);
|
||||
}
|
||||
if (event.isTracking() && !event.isCanceled()) {
|
||||
dismissDropDown();
|
||||
return true;
|
||||
|
||||
@@ -915,10 +915,16 @@ public class ListPopupWindow {
|
||||
// to the drop down list but instead, consume it immediately
|
||||
final View anchorView = mDropDownAnchorView;
|
||||
if (event.getAction() == KeyEvent.ACTION_DOWN && event.getRepeatCount() == 0) {
|
||||
anchorView.getKeyDispatcherState().startTracking(event, this);
|
||||
KeyEvent.DispatcherState state = anchorView.getKeyDispatcherState();
|
||||
if (state != null) {
|
||||
state.startTracking(event, this);
|
||||
}
|
||||
return true;
|
||||
} else if (event.getAction() == KeyEvent.ACTION_UP) {
|
||||
anchorView.getKeyDispatcherState().handleUpEvent(event);
|
||||
KeyEvent.DispatcherState state = anchorView.getKeyDispatcherState();
|
||||
if (state != null) {
|
||||
state.handleUpEvent(event);
|
||||
}
|
||||
if (event.isTracking() && !event.isCanceled()) {
|
||||
dismiss();
|
||||
return true;
|
||||
|
||||
@@ -1468,12 +1468,17 @@ public class PopupWindow {
|
||||
if (event.getKeyCode() == KeyEvent.KEYCODE_BACK) {
|
||||
if (event.getAction() == KeyEvent.ACTION_DOWN
|
||||
&& event.getRepeatCount() == 0) {
|
||||
getKeyDispatcherState().startTracking(event, this);
|
||||
return true;
|
||||
} else if (event.getAction() == KeyEvent.ACTION_UP
|
||||
&& getKeyDispatcherState().isTracking(event) && !event.isCanceled()) {
|
||||
dismiss();
|
||||
KeyEvent.DispatcherState state = getKeyDispatcherState();
|
||||
if (state != null) {
|
||||
state.startTracking(event, this);
|
||||
}
|
||||
return true;
|
||||
} else if (event.getAction() == KeyEvent.ACTION_UP) {
|
||||
KeyEvent.DispatcherState state = getKeyDispatcherState();
|
||||
if (state != null && state.isTracking(event) && !event.isCanceled()) {
|
||||
dismiss();
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return super.dispatchKeyEvent(event);
|
||||
} else {
|
||||
|
||||
Reference in New Issue
Block a user