Android no puede obtener matriz de bytes de la intención

Estoy tratando de enviar un byte [] de una actividad a otra. En la actividad de recepción el byte [] parece ser nulo después de obtener los extras de la intención. ¿algunas ideas?

Gracias.

Button save = (Button)findViewById(R.id.save); save.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { touchView.isSaved = true; Bundle bundle = new Bundle(); bundle.putByteArray("byteArr", touchView.data); Intent intent = new Intent(mContext, SavePic.class); intent.putExtra(bundle ); startActivity(intent); }}) ; 

.

  public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.savepic); final EditText edittext = (EditText) findViewById(R.id.edittext); edittext.setText(""); edittext.setOnKeyListener(new OnKeyListener() { public boolean onKey(View v, int keyCode, KeyEvent event) { // If the event is a key-down event on the "enter" button if ((event.getAction() == KeyEvent.ACTION_DOWN) && (keyCode == KeyEvent.KEYCODE_ENTER)) { // Perform action on key press Bundle extras = getIntent().getExtras(); byte [] arr = extras.getByteArray("byteArr"); if(arr != null){ Log.e("xxxxxx", "********* arr not null"); }else{ Log.e("xxxxxx", "********* arr is null"); } final Bitmap mCBitmap2 = BitmapFactory.decodeByteArray(arr, 0, arr.length); 

.

[Actualizado] he cambiado los valores clave por lo que no son los mismos datos / bytrArr, también la intención ahora sólo pasa un paquete

El valor de las claves no es tu problema. No está recuperando los datos de la misma manera que lo está poniendo.

En la primera sección del código, está poniendo un byte [] dentro de un Bundle , y luego poner ese Bundle en los extras de Intent. Esto significa que el EXTRA en la clave "datos" es un paquete, no un byte []. Usted no tiene necesidad de insertar los extras de esta manera. Simplemente haga intent.putExtra("byteArr", touchView.data) para insertar el byte [] como Extra.

Haciendo esto, usted será capaz de recuperar su byte [] de nuevo con getIntent().getByteArrayExtra("byteArr") en la segunda sección de código.

Por último, como nota secundaria, si Intent.putExtras(bundle) varios extras que quería aplicar con una llamada, podría poner cada uno en un Bundle y luego llamar a Intent.putExtras(bundle) para que todos los datos del Bundle se colocaran individualmente en La Intención. Pero esto no es lo mismo que añadir que Bundle como un extra en sí.

HTH

No dé el mismo nombre clave a los dos extras. Dar un nombre diferente.

Simplemente llame a intent.putExtra(bundle); Por poner el paquete en la intención.

Reemplazar

Intent.putExtra ("datos", paquete);

con

Intent.putExtras (paquete);

  • Pasar objeto personalizado parcelable extra o en ArrayList a RemoteViewsService rompe appwidget
  • Cómo pasar ArrayList <CustomeObject> de una actividad a otra?
  • Problemas al enviar el paquete con PendingIntent a un receptor de difusión, datos perdidos
  • Cómo utilizar Parcel.readBooleanArray ()?
  • NullPointerException de getExtras ()
  • Cómo utilizar writeStringArray () y readStringArray () en una parcela
  • Ejemplo simple para Intent y Bundle
  • Diferencia entre getExtras (nombre) .getString y getIntent (). GetStringExtra (nombre)
  • Android E / Parcel: Clase no encontrada al desmarcar (sólo en Samsung Tab3)
  • ¿Cuál es el punto de setArgument en DialogFragment?
  • ¿Cómo usar y empaquetar un archivo JAR con mi aplicación de Android?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.