我已經知道如何在活動之間發送圖像。
因爲我無法在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