我已经知道如何在活动之间发送图像。
因为我无法在Eclipse中模拟Android应用程序,所以每次我想测试它时,都必须将它安装到我的手机中,以便我看不到它返回的错误。错误在活动之间发送位图android
正如我之前所说的,当我想从“Acceso_Camara”(主要活动)发送图像到“Visualizar_Imagen”(我想要接收图像的活动)时,我遇到了2个活动之间的问题。 在这里,你是我没有送形象代码:
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
Intent siguienteActividad = new Intent(this,Visualizar_Imagen.class);
switch(requestCode) {
case REQUEST_IMAGE_CAPTURE:
if (resultCode == RESULT_OK) {
Bundle extras = data.getExtras();
Bitmap bitmap = (Bitmap) extras.get("Imagen");
ByteArrayOutputStream bs = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.PNG, 50, bs);
siguienteActividad.putExtra("byteArray", bs.toByteArray());
startActivity(siguienteActividad);
}
break;
case SELECT_PICTURE:
if(resultCode == RESULT_OK && data != null) {
Uri selectedImage = data.getData();
String[] filePathColumn = { MediaStore.Images.Media.DATA };
Cursor cursor = getContentResolver().query(selectedImage,filePathColumn, null, null, null);
cursor.moveToFirst();
int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
String picturePath = cursor.getString(columnIndex);
cursor.close();
Bitmap bitmap = BitmapFactory.decodeFile(picturePath);
ByteArrayOutputStream bs = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.JPEG, 50, bs);
siguienteActividad.putExtra("byteArray", bs.toByteArray());
startActivity(siguienteActividad);
}
break;
}
}
“REQUEST_IMAGE_CAPTURE”和“SELECT_PICTURE”被设置好的为“私有静态最终诠释”,每个人的价值。
Recieving活动
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_visualizar__imagen);
if(getIntent().hasExtra("byteArray")) {
imageView1 = (ImageView) findViewById(R.id.imageView1);
Bitmap bitmap = BitmapFactory.decodeByteArray(getIntent().getByteArrayExtra("byteArray"), 0,
getIntent().getByteArrayExtra("byteArray").length);
imageView1.setImageBitmap(bitmap);
}
}
当我运行应用程序,它给了我一个错误,说:“应用程序已停止”
任何想法? P:我也试过不压缩图片发送,实际上我没有错误,但在“Visualizar_Imagen”活动中给出了anthing。
欧凯,所以这是给定的错误,似乎没有数据发送到下一个活动。有任何想法吗?
04-27 18:02:20.730: E/AndroidRuntime(11283): java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=1, result=-1, data=Intent { act=inline-data (has extras) }} to activity {com.example.proyecto/com.example.proyecto.Acceso_Camara}: java.lang.NullPointerException
04-27 18:02:20.730: E/AndroidRuntime(11283): at android.app.ActivityThread.deliverResults(ActivityThread.java:3557)
04-27 18:02:20.730: E/AndroidRuntime(11283): at android.app.ActivityThread.handleSendResult(ActivityThread.java:3600)
04-27 18:02:20.730: E/AndroidRuntime(11283): at android.app.ActivityThread.access$1300(ActivityThread.java:151
将手机插入PC并监控Logcat数据。 – Squonk
如果我没有错,为了监视Logcat数据,Eclipse必须识别我的手机的驱动程序......不是吗?由于我有一个“白色品牌”的手机,Eclipse不识别我的驱动程序,我无法监视Logcat数据。 请纠正我,如果我错了,并感谢您的快速回答 –
转到您的命令shell,键入“adb设备“与你的手机插入。它显示了吗?如果没有,请下载适用于您设备的USB驱动程序。 – Knossos