OSDN Git Service

Fix bug #13794200 Settings crash when screen is locked and Power Usage...
authorFabrice Di Meglio <fdimeglio@google.com>
Thu, 3 Apr 2014 23:43:26 +0000 (16:43 -0700)
committerFabrice Di Meglio <fdimeglio@google.com>
Thu, 3 Apr 2014 23:43:26 +0000 (16:43 -0700)
...Settings is launched with an Intent

- fix the NPE by checking if mSearchMenuItem / mSearchView references are null

Change-Id: I7518c8360af88a20df780be8cb89360a26cdb8d0

src/com/android/settings/SettingsActivity.java

index 5aa2737..62b37af 100644 (file)
@@ -185,6 +185,8 @@ public class SettingsActivity extends Activity
 
     private static final String EXTRA_UI_OPTIONS = "settings:ui_options";
 
+    private static final String EMPTY_QUERY = "";
+
     private static boolean sShowNoHomeNotice = false;
 
     private String mFragmentClass;
@@ -577,8 +579,17 @@ public class SettingsActivity extends Activity
                 }
             }
         }
-        outState.putBoolean(SAVE_KEY_SEARCH_MENU_EXPANDED, mSearchMenuItem.isActionViewExpanded());
-        outState.putString(SAVE_KEY_SEARCH_QUERY, mSearchView.getQuery().toString());
+
+        // The option menus are created if the ActionBar is visible and they are also created
+        // asynchronously. If you launch Settings with an Intent action like
+        // android.intent.action.POWER_USAGE_SUMMARY and at the same time your device is locked
+        // thru a LockScreen, onCreateOptionsMenu() is not yet called and references to the search
+        // menu item and search view are null.
+        boolean isExpanded = (mSearchMenuItem != null) && mSearchMenuItem.isActionViewExpanded();
+        outState.putBoolean(SAVE_KEY_SEARCH_MENU_EXPANDED, isExpanded);
+
+        String query = (mSearchView != null) ? mSearchView.getQuery().toString() : EMPTY_QUERY;
+        outState.putString(SAVE_KEY_SEARCH_QUERY, query);
     }
 
     @Override