Fix http://b/issue?id=2203681

There is a race between the view system
dispatching focus and mRollo being intialized. Now
if AllApps is supposed to gain focus before mRollo
is ready we remember that state and gain focus 
later.
diff --git a/src/com/android/launcher2/AllAppsView.java b/src/com/android/launcher2/AllAppsView.java
index d96268c..722213d 100644
--- a/src/com/android/launcher2/AllAppsView.java
+++ b/src/com/android/launcher2/AllAppsView.java
@@ -110,6 +110,8 @@
     private int mDownIconIndex = -1;
     private int mCurrentIconIndex = -1;
 
+    private boolean mShouldGainFocus;
+
 
     static class Defines {
         public static final int ALLOC_PARAMS = 0;
@@ -192,6 +194,10 @@
                 mRollo.setApps(mAllAppsList);
                 Log.d(TAG, "surfaceChanged... calling mRollo.setApps");
             }
+            if (mShouldGainFocus) {
+                gainFocus();
+                mShouldGainFocus = false;
+            }
         } else {
             mRollo.mHasSurface = true;
             mRollo.dirtyCheck();
@@ -249,24 +255,36 @@
         }
 
         if (gainFocus) {
-            if (!mArrowNavigation && mRollo.mState.iconCount > 0) {
-                // Select the first icon when we gain keyboard focus
-                mArrowNavigation = true;
-                mRollo.selectIcon(Math.round(mRollo.mMessageProc.mPosX) * Defines.COLUMNS_PER_PAGE,
-                        SELECTED_FOCUSED);
-                mRollo.mState.save();
+            if (mRollo != null) {
+                gainFocus();
+            } else {
+                mShouldGainFocus = true;
             }
         } else {
-            if (mArrowNavigation) {
-                // Clear selection when we lose focus
-                mRollo.clearSelectedIcon();
-                mRollo.setHomeSelected(SELECTED_NONE);
-                mRollo.mState.save();
-                mArrowNavigation = false;
+            if (mRollo != null) {
+                if (mArrowNavigation) {
+                    // Clear selection when we lose focus
+                    mRollo.clearSelectedIcon();
+                    mRollo.setHomeSelected(SELECTED_NONE);
+                    mRollo.mState.save();
+                    mArrowNavigation = false;
+                }
+            } else {
+                mShouldGainFocus = false;
             }
         }
     }
 
+    private void gainFocus() {
+        if (!mArrowNavigation && mRollo.mState.iconCount > 0) {
+            // Select the first icon when we gain keyboard focus
+            mArrowNavigation = true;
+            mRollo.selectIcon(Math.round(mRollo.mMessageProc.mPosX) * Defines.COLUMNS_PER_PAGE,
+                    SELECTED_FOCUSED);
+            mRollo.mState.save();
+        }
+    }
+
     @Override
     public boolean onKeyDown(int keyCode, KeyEvent event) {