Espero que alguien pueda ayudarme con la pregunta. He mirado por todas partes y he probado muchas sugerencias sobre cómo obtener paquetes de una actividad a otra. La mayoría de las sugerencias que he probado y aún no funcionan, pensé que el siguiente código funcionaría pero no funciona. Creo que obtengo un valor nulo cuando intento obtener el paquete en la nueva actividad. Aquí está el código:

En mi clase SyncActivity tengo esto:

Set<BluetoothDevice> pairedDevices = mBluetoothAdapter.getBondedDevices();
        // If there are paired devices
        if (pairedDevices.size() > 0) {
            // Loop through paired devices
            for (BluetoothDevice device : pairedDevices) {
                // Add the name and address to an array adapter to show in a ListView
                deviceList.add(device.getName());
                deviceList.add(device.getAddress());
                deviceList.add(device.getUuids().toString());
            }
        }

        Intent myIntent = new Intent(SyncActivity.this, BlueToothConnThread.class);
        Bundle myBundle = new Bundle();
        myBundle.putStringArrayList("DeviceList", deviceList);
        myIntent.putExtras(myBundle);
        startActivity(myIntent);

En mi clase BlueToothConnThread hago esto:

 public BlueToothConnThread() {

    Bundle dataBundle = getIntent().getExtras();    
    deviceList = dataBundle.getStringArrayList("DeviceList");

}

El error aparece después de intentar inicializar dataBundle con getIntent (). GetExtras (); Cualquier ayuda muy apreciada.

Gracias

Russell

0
RupaRupa 26 ene. 2016 a las 08:27

2 respuestas

La mejor respuesta

No puede recibir Bundle en algún método arbitrario. Puede obtener el paquete en el método OnCreate de la actividad. Entonces solo funciona.

 public BlueToothConnThread extends Activity {

    @Override
    public void onCreate(Bundle onSavedInstanceState) {
     //Some code

    Bundle dataBundle = getIntent().getExtras();    
    deviceList = dataBundle.getStringArrayList("DeviceList");
    }
}
0
thedarkpassenger 26 ene. 2016 a las 05:39

Así es como lo pasa.

Intent intent = new Intent(ABC.this, DEF.class);
Bundle bundle = new Bundle();
bundle.putSerializable("ArrayList", yourArrayList);
intent.putExtras(bundle);  

Y así es como lo obtienes.

Bundle bundle = data.getExtras();
ArrayList<Bluetooth> bluetoothArrayList= (ArrayList<Bluetooth>) bundle.getSerializable("ArrayList");

Espero que ayude :)

1
Salmaan 26 ene. 2016 a las 05:33