Как связаны BluetoothDevice и состояние BT-адаптора (вкл. / выкл.)?
Добрый день, Хабр!
Столкнулся с такой проблемой:
есть такой вот кусок кода: private HashSet discoveredDevices;
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
//....
mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
if (savedInstanceState == null) {
discoveredDevices = new HashSet();
} else {
discoveredDevices = (HashSet) savedInstanceState
.getSerializable("devices");
for (BluetoothDevice device : discoveredDevices) {
adapter.add(device.getName() + "\n" + device.getAddress());
}
}
//....
}
И код сохранения состояния: @Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putSerializable("devices", discoveredDevices);
}
Если отключить БТ и повернуть экран (т.е. попасть в обработчик onActivityCreated), то на этом месте: discoveredDevices = (HashSet) savedInstanceState.getSerializable("devices");
программа вылетает.
Может кто-нибудь объяснить, почему так происходит?