Problème de transmission d'un ParcelableArrayList
Bonjour,
Tout d'abord je ne sais pas si il existe un endroit où se présenter, je n'hésiterai pas à y indiquer mon profil.
Pour faire simple, je suis actuellement en train de travailler sur une application dont une partie doit permettre de gérer des périphériques bluetooth.
Je stocke donc les périphériques bluetooth découverts par mon BluetoothAdapter dans une ArrayList<BluetoothDevice>.
Lorsque je souhaite sauvegarder cette liste depuis la fonction onSaveInstanceState de mon activité puis la récupérer dans la fonction onRestoreInstanceState,
cette liste me revient vide.
Mon code est le suivant, sachant que la classe BluetoothDevice implémente Parcelable et que pour un objet simple mon code fonctionne correctement.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
|
private ArrayList<BluetoothDevice> listBluetooth = new ArrayList<BluetoothDevice>();
private BluetoothDevice mCurrentDevice;
@Override
protected void onSaveInstanceState (Bundle bundle)
{
super.onSaveInstanceState(bundle);
bundle.putParcelable("currentDevice", mCurrentDevice);
//ici listBluetooth.size() > 0
bundle.putParcelableArrayList("bluetoothList", listBluetooth);
}
@Override
public void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
//ici je récupère la bonne valeur de mCurrentDevice
mCurrentDevice = savedInstanceState.getParcelable("currentDevice");
if (mCurrentDevice != null)
{
tvCurrentDevice.setBluetoothName(mCurrentDevice.getName());
tvCurrentDevice.setBluetoothMacAddress(mCurrentDevice.getAddress());
}
//Ici ma liste est vide
listBluetooth = savedInstanceState.getParcelableArrayList("bluetoothList");
//Probleme listBluetooth.size() == 0
for (int i = 0 ; i< listBluetooth.size() ; i++)
{
BluetoothNetwork btNetwork = new BluetoothNetwork();
btNetwork.setBluetoothNetwork(listBluetooth.get(i));
bluetoothArrayAdapter.add(btNetwork);
}
} |
J’espère que l'un d'entre vous pourra m'éclairer sur ce petit soucis ou me donner une piste de recherche à approfondir.
Merci d'avance pour votre aide.
Cyrille