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 : 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);
		}
	}
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