Keep callback reference from being null.

The hide call delays removal of mKeyguardView but the inflate call
occurred before the delay expired. The method inflateKeyguardView
would have removed it except hide() also nulled out mKeyguardView.
Consequently there were two KeyguardHostViews in the view hierarchy.
The findViewById returned the first view which got the callback
assigned. Later that view was removed from the hierarchy and when
the new view was called it had no callback assigned => NPE!

This fix removes the KeyguardHostView from the mKeyguardHost by
referncing the id rather than the null mKeyguardView.

Fixes bug 7250008.

Change-Id: Ic9da3415d72187628f06271c12d5184f9d01059b
This commit is contained in:
Craig Mautner
2012-09-28 15:22:39 -07:00
parent cd03a26f4f
commit 00baebe124

View File

@@ -164,8 +164,9 @@ public class KeyguardViewManager {
}
private void inflateKeyguardView() {
if (mKeyguardView != null) {
mKeyguardHost.removeView(mKeyguardView);
View v = mKeyguardHost.findViewById(R.id.keyguard_host_view);
if (v != null) {
mKeyguardHost.removeView(v);
}
// TODO: Remove once b/7094175 is fixed
Slog.d(TAG, "inflateKeyguardView: b/7094175 mContext.config="