Fix bug #16515550 Settings app crashes for intent com.android.settings.QUICK_LAUNCH_SETTINGS

- make it work again (what a code...)

Change-Id: Ic71d8e40ff8a5e0c663fd40655e4f4cc31bc8caf
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 17f1e54..0783c65 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -1148,8 +1148,7 @@
             </intent-filter>
         </activity>
 
-        <!-- TODO: Test this once Settings stops crashing for this intent -->
-        <activity android:name=".quicklaunch.QuickLaunchSettings"
+        <activity android:name="Settings$QuickLaunchSettingsActivity"
                 android:label="@string/quick_launch_title">
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
@@ -1158,8 +1157,10 @@
                 <category android:name="android.intent.category.VOICE_LAUNCH" />
                 <category android:name="android.intent.category.DEFAULT" />
             </intent-filter>
+            <meta-data android:name="com.android.settings.FRAGMENT_CLASS"
+                       android:value="com.android.settings.quicklaunch.QuickLaunchSettings" />
             <meta-data android:name="com.android.settings.PRIMARY_PROFILE_CONTROLLED"
-                android:value="true" />
+                       android:value="true" />
         </activity>
 
         <activity android:name=".quicklaunch.BookmarkPicker" android:label="@string/quick_launch_title">
diff --git a/src/com/android/settings/Settings.java b/src/com/android/settings/Settings.java
index 01149f3..f8f1ffb 100644
--- a/src/com/android/settings/Settings.java
+++ b/src/com/android/settings/Settings.java
@@ -93,6 +93,7 @@
     public static class NotificationSettingsActivity extends SettingsActivity { /* empty */ }
     public static class AppNotificationSettingsActivity extends SettingsActivity { /* empty */ }
     public static class OtherSoundSettingsActivity extends SettingsActivity { /* empty */ }
+    public static class QuickLaunchSettingsActivity extends SettingsActivity { /* empty */ }
 
     public static class TopLevelSettings extends SettingsActivity { /* empty */ }
 }
diff --git a/src/com/android/settings/SettingsActivity.java b/src/com/android/settings/SettingsActivity.java
index 90e8fd4..76a7300 100644
--- a/src/com/android/settings/SettingsActivity.java
+++ b/src/com/android/settings/SettingsActivity.java
@@ -84,6 +84,7 @@
 import com.android.settings.fuelgauge.PowerUsageSummary;
 import com.android.settings.notification.AppNotificationSettings;
 import com.android.settings.notification.OtherSoundSettings;
+import com.android.settings.quicklaunch.QuickLaunchSettings;
 import com.android.settings.search.DynamicIndexableContentMonitor;
 import com.android.settings.search.Index;
 import com.android.settings.inputmethod.InputMethodAndLanguageSettings;
@@ -283,7 +284,8 @@
             InstalledAppDetails.class.getName(),
             BatterySaverSettings.class.getName(),
             AppNotificationSettings.class.getName(),
-            OtherSoundSettings.class.getName()
+            OtherSoundSettings.class.getName(),
+            QuickLaunchSettings.class.getName()
     };
 
 
diff --git a/src/com/android/settings/quicklaunch/QuickLaunchSettings.java b/src/com/android/settings/quicklaunch/QuickLaunchSettings.java
index a7ddc07..1367018 100644
--- a/src/com/android/settings/quicklaunch/QuickLaunchSettings.java
+++ b/src/com/android/settings/quicklaunch/QuickLaunchSettings.java
@@ -103,7 +103,6 @@
         initShortcutPreferences();
         mBookmarksCursor = getActivity().getContentResolver().query(Bookmarks.CONTENT_URI,
                 sProjection, null, null, null);
-        getListView().setOnItemLongClickListener(this);
     }
 
     @Override
@@ -124,16 +123,21 @@
 
     @Override
     public void onStop() {
+        super.onStop();
         mBookmarksCursor.close();
     }
 
     @Override
     public void onActivityCreated(Bundle state) {
         super.onActivityCreated(state);
-        
-        // Restore the clear dialog's info
-        mClearDialogBookmarkTitle = state.getString(CLEAR_DIALOG_BOOKMARK_TITLE);
-        mClearDialogShortcut = (char) state.getInt(CLEAR_DIALOG_SHORTCUT, 0);
+
+        getListView().setOnItemLongClickListener(this);
+
+        if (state != null) {
+            // Restore the clear dialog's info
+            mClearDialogBookmarkTitle = state.getString(CLEAR_DIALOG_BOOKMARK_TITLE);
+            mClearDialogShortcut = (char) state.getInt(CLEAR_DIALOG_SHORTCUT, 0);
+        }
     }
 
     @Override