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.
- La aplicación de Android aparece varias veces en la lista "Aplicaciones recientes"
- Estructura del paquete de patrones de Android MVP
- Escribir objetos a los paquetes
- En Google Play, ¿Cómo impide la publicación de una aplicación con un paquete en particular lo que pueden publicarse otros paquetes y por quién?
- Algunos objetos parcelables reunidos en un intento / paquete podrían interferir y comprometer la lectura de Intención / Bundle?
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
- com.android.support:appcompat-v7 y versión de diseño 23.2.0 error de paquete de bloqueo
- WriteToParcel () no se llama en los cambios de orientación en Android
- Paquetes múltiples en una aplicación para Android
- Eclipse Java - nombre de paquete no válido - Palabras reservadas en el nombre del paquete
- Pasar la lista personalizada de datos mediante el paquete
- Estructura del paquete Android Mejor práctica
- Poner un mapa de bits en un paquete
- Parcelable donde / cuando se describeContents () usado?
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);