NPE check in VpnSettings.
Bug: 3368545
Also fix a couple of bugs in TetherSettings:
Bug: 3090156 - view was being reused without removing from old dialog
Bug: 3368493 - preference being removed a second time
Change-Id: I8fe513d41e1f3af6994783be5ead69b6bd205711
diff --git a/src/com/android/settings/TetherSettings.java b/src/com/android/settings/TetherSettings.java
index 81d23ab..085a089 100644
--- a/src/com/android/settings/TetherSettings.java
+++ b/src/com/android/settings/TetherSettings.java
@@ -16,7 +16,6 @@
package com.android.settings;
-import com.android.settings.bluetooth.BluetoothSettings;
import com.android.settings.wifi.WifiApEnabler;
import android.app.Activity;
@@ -35,6 +34,10 @@
import android.preference.CheckBoxPreference;
import android.preference.Preference;
import android.preference.PreferenceScreen;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.view.ViewParent;
import android.webkit.WebView;
import java.io.InputStream;
@@ -86,8 +89,10 @@
}
@Override
- public void onActivityCreated(Bundle savedInstanceState) {
- super.onActivityCreated(savedInstanceState);
+ public View onCreateView(LayoutInflater inflater, ViewGroup container,
+ Bundle savedInstanceState) {
+ View view = super.onCreateView(inflater, container, savedInstanceState);
+
final Activity activity = getActivity();
mBluetoothPan = new BluetoothPan(activity);
@@ -108,7 +113,6 @@
boolean wifiAvailable = mWifiRegexs.length != 0;
boolean bluetoothAvailable = mBluetoothRegexs.length != 0;
-
if (!usbAvailable || Utils.isMonkeyRunning()) {
getPreferenceScreen().removePreference(mUsbTether);
}
@@ -144,6 +148,8 @@
*/
mWifiApEnabler = new WifiApEnabler(activity, mEnableWifiAp);
mView = new WebView(activity);
+
+ return view;
}
@Override
@@ -181,7 +187,11 @@
}
mView.loadUrl(url);
-
+ // Detach from old parent first
+ ViewParent parent = mView.getParent();
+ if (parent != null && parent instanceof ViewGroup) {
+ ((ViewGroup) parent).removeView(mView);
+ }
return new AlertDialog.Builder(getActivity())
.setCancelable(true)
.setTitle(R.string.tethering_help_button_text)
diff --git a/src/com/android/settings/vpn/VpnSettings.java b/src/com/android/settings/vpn/VpnSettings.java
index bd1cc9e..03687f2 100644
--- a/src/com/android/settings/vpn/VpnSettings.java
+++ b/src/com/android/settings/vpn/VpnSettings.java
@@ -725,6 +725,8 @@
}
private void startVpnEditor(final VpnProfile profile, boolean add) {
+ if (getActivity() == null) return;
+
Bundle args = new Bundle();
args.putParcelable(KEY_VPN_PROFILE, profile);
// TODO: Show different titles for add and edit.