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
This commit is contained in:
Amith Yamasani
2011-01-21 09:28:31 -08:00
parent 5dc460e407
commit 476d795667
2 changed files with 17 additions and 5 deletions

View File

@@ -16,7 +16,6 @@
package com.android.settings; package com.android.settings;
import com.android.settings.bluetooth.BluetoothSettings;
import com.android.settings.wifi.WifiApEnabler; import com.android.settings.wifi.WifiApEnabler;
import android.app.Activity; import android.app.Activity;
@@ -35,6 +34,10 @@ import android.os.Environment;
import android.preference.CheckBoxPreference; import android.preference.CheckBoxPreference;
import android.preference.Preference; import android.preference.Preference;
import android.preference.PreferenceScreen; 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 android.webkit.WebView;
import java.io.InputStream; import java.io.InputStream;
@@ -86,8 +89,10 @@ public class TetherSettings extends SettingsPreferenceFragment {
} }
@Override @Override
public void onActivityCreated(Bundle savedInstanceState) { public View onCreateView(LayoutInflater inflater, ViewGroup container,
super.onActivityCreated(savedInstanceState); Bundle savedInstanceState) {
View view = super.onCreateView(inflater, container, savedInstanceState);
final Activity activity = getActivity(); final Activity activity = getActivity();
mBluetoothPan = new BluetoothPan(activity); mBluetoothPan = new BluetoothPan(activity);
@@ -108,7 +113,6 @@ public class TetherSettings extends SettingsPreferenceFragment {
boolean wifiAvailable = mWifiRegexs.length != 0; boolean wifiAvailable = mWifiRegexs.length != 0;
boolean bluetoothAvailable = mBluetoothRegexs.length != 0; boolean bluetoothAvailable = mBluetoothRegexs.length != 0;
if (!usbAvailable || Utils.isMonkeyRunning()) { if (!usbAvailable || Utils.isMonkeyRunning()) {
getPreferenceScreen().removePreference(mUsbTether); getPreferenceScreen().removePreference(mUsbTether);
} }
@@ -144,6 +148,8 @@ public class TetherSettings extends SettingsPreferenceFragment {
*/ */
mWifiApEnabler = new WifiApEnabler(activity, mEnableWifiAp); mWifiApEnabler = new WifiApEnabler(activity, mEnableWifiAp);
mView = new WebView(activity); mView = new WebView(activity);
return view;
} }
@Override @Override
@@ -181,7 +187,11 @@ public class TetherSettings extends SettingsPreferenceFragment {
} }
mView.loadUrl(url); 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()) return new AlertDialog.Builder(getActivity())
.setCancelable(true) .setCancelable(true)
.setTitle(R.string.tethering_help_button_text) .setTitle(R.string.tethering_help_button_text)

View File

@@ -725,6 +725,8 @@ public class VpnSettings extends SettingsPreferenceFragment
} }
private void startVpnEditor(final VpnProfile profile, boolean add) { private void startVpnEditor(final VpnProfile profile, boolean add) {
if (getActivity() == null) return;
Bundle args = new Bundle(); Bundle args = new Bundle();
args.putParcelable(KEY_VPN_PROFILE, profile); args.putParcelable(KEY_VPN_PROFILE, profile);
// TODO: Show different titles for add and edit. // TODO: Show different titles for add and edit.