OSDN Git Service

Fix bug #12910775 Settings crash after tap on Access Point Names under Mobile networks
authorFabrice Di Meglio <fdimeglio@google.com>
Thu, 6 Feb 2014 23:46:19 +0000 (15:46 -0800)
committerFabrice Di Meglio <fdimeglio@google.com>
Fri, 7 Feb 2014 01:23:03 +0000 (17:23 -0800)
- ApnSettings is now a fragment so introduce a new ApnSettingsActivity
- ApsSettingsActivity will use the ApnSettings fragment
- move the getListView() call to onActivityCreated(...) as the ListView
needs to be created before this call can be done.
- add also an alias for the old activity name ".ApsSettings"

Change-Id: Id228722d7f34415d4b036282f0845e28546111df

AndroidManifest.xml
src/com/android/settings/ApnSettings.java
src/com/android/settings/Settings.java
src/com/android/settings/SettingsActivity.java

index 6e01aec..cc407db 100644 (file)
             </intent-filter>
         </activity-alias>
 
-        <activity android:name="ApnSettings"
+        <activity android:name="Settings$ApnSettingsActivity"
                 android:label="@string/apn_settings"
                 android:configChanges="orientation|keyboardHidden|screenSize"
                 android:launchMode="singleTask"
                 <category android:name="android.intent.category.DEFAULT" />
                 <category android:name="android.intent.category.VOICE_LAUNCH" />
             </intent-filter>
+            <meta-data android:name="com.android.settings.FRAGMENT_CLASS"
+                       android:value="com.android.settings.ApnSettings" />
         </activity>
 
+        <!-- Keep compatibility with old shortcuts. -->
+        <activity-alias android:name=".ApnSettings"
+                        android:label="@string/apn_settings"
+                        android:configChanges="orientation|keyboardHidden|screenSize"
+                        android:launchMode="singleTask"
+                        android:exported="true"
+                        android:targetActivity="Settings$ApnSettingsActivity">
+            <meta-data android:name="com.android.settings.FRAGMENT_CLASS"
+                       android:value="com.android.settings.ApnSettings" />
+        </activity-alias>
+
         <activity android:name="Settings$BluetoothSettingsActivity"
                 android:uiOptions="splitActionBarWhenNarrow"
                 android:label="@string/bluetooth_settings_title"
index 294d50f..5b71010 100644 (file)
@@ -120,13 +120,19 @@ public class ApnSettings extends SettingsPreferenceFragment implements
         super.onCreate(icicle);
 
         addPreferencesFromResource(R.xml.apn_settings);
-        getListView().setItemsCanFocus(true);
 
         mMobileStateFilter = new IntentFilter(
                 TelephonyIntents.ACTION_ANY_DATA_CONNECTION_STATE_CHANGED);
     }
 
     @Override
+    public void onActivityCreated(Bundle savedInstanceState) {
+        super.onActivityCreated(savedInstanceState);
+
+        getListView().setItemsCanFocus(true);
+    }
+
+    @Override
     public void onResume() {
         super.onResume();
 
index 6bcfbee..4754dad 100644 (file)
@@ -88,5 +88,6 @@ public class Settings extends SettingsActivity {
     public static class PrintJobSettingsActivity extends SettingsActivity { /* empty */ }
 
     public static class TopLevelSettings extends SettingsActivity { /* empty */ }
+    public static class ApnSettingsActivity extends SettingsActivity { /* empty */ }
 }
 
index a362ee6..af0d8bb 100644 (file)
@@ -278,7 +278,8 @@ public class SettingsActivity extends Activity
             PaymentSettings.class.getName(),
             KeyboardLayoutPickerFragment.class.getName(),
             ChooseAccountFragment.class.getName(),
-            DashboardSummary.class.getName()
+            DashboardSummary.class.getName(),
+            ApnSettings.class.getName()
     };
 
     private SharedPreferences mDevelopmentPreferences;