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.
J’espère que l'un d'entre vous pourra m'éclairer sur ce petit soucis ou me donner une piste de recherche à approfondir.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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); } }
Merci d'avance pour votre aide.
Cyrille
Partager