diff --git a/src/com/android/settings/bluetooth/BluetoothSettings.java b/src/com/android/settings/bluetooth/BluetoothSettings.java index 4b278ac28a0..bbd86a1ce8a 100755 --- a/src/com/android/settings/bluetooth/BluetoothSettings.java +++ b/src/com/android/settings/bluetooth/BluetoothSettings.java @@ -249,6 +249,8 @@ public final class BluetoothSettings extends DeviceListPreferenceFragment implem if (!mAvailableDevicesCategoryIsPresent) { getPreferenceScreen().addPreference(mAvailableDevicesCategory); } + mLocalManager.getCachedDeviceManager().clearCachedDevices(); + mAvailableDevicesCategory.removeAll(); mLocalAdapter.startScanning(true); } @@ -405,7 +407,7 @@ public final class BluetoothSettings extends DeviceListPreferenceFragment implem LayoutInflater inflater = getActivity().getLayoutInflater(); mSettingsDialogView = inflater.inflate(R.layout.bluetooth_device_picker, null); profileFrag = (DeviceProfilesSettings)activity.getFragmentManager() - .findFragmentById(R.id.bluetooth_fragment_settings); + .findFragmentById(R.id.bluetooth_fragment_settings); } final View dialogLayout = mSettingsDialogView; diff --git a/src/com/android/settings/bluetooth/CachedBluetoothDeviceManager.java b/src/com/android/settings/bluetooth/CachedBluetoothDeviceManager.java index ff282cc67c9..0b53b1a1e2f 100755 --- a/src/com/android/settings/bluetooth/CachedBluetoothDeviceManager.java +++ b/src/com/android/settings/bluetooth/CachedBluetoothDeviceManager.java @@ -86,7 +86,9 @@ final class CachedBluetoothDeviceManager { BluetoothDevice device) { CachedBluetoothDevice newDevice = new CachedBluetoothDevice(mContext, adapter, profileManager, device); - mCachedDevices.add(newDevice); + synchronized (mCachedDevices) { + mCachedDevices.add(newDevice); + } return newDevice; } @@ -110,6 +112,10 @@ final class CachedBluetoothDeviceManager { return device.getAddress(); } + public synchronized void clearCachedDevices() { + mCachedDevices.clear(); + } + public synchronized void onScanningStateChanged(boolean started) { if (!started) return; diff --git a/src/com/android/settings/bluetooth/DeviceListPreferenceFragment.java b/src/com/android/settings/bluetooth/DeviceListPreferenceFragment.java index f482ecdcad1..e7208b57636 100644 --- a/src/com/android/settings/bluetooth/DeviceListPreferenceFragment.java +++ b/src/com/android/settings/bluetooth/DeviceListPreferenceFragment.java @@ -167,6 +167,12 @@ public abstract class DeviceListPreferenceFragment extends } void createDevicePreference(CachedBluetoothDevice cachedDevice) { + if (mDeviceListGroup == null) { + Log.w(TAG, "Trying to create a device preference before the list group/category " + + "exists!"); + return; + } + BluetoothDevicePreference preference = new BluetoothDevicePreference( getActivity(), cachedDevice);