2015-09-10 6 views
0

Это мой код, чтобы запустить камеру и сделать снимок и отправить в Intent на другой вид деятельности:Получить фотографию от предыдущей деятельности на текущий

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 
    // Inflate the layout for this fragment 
    view = inflater.inflate(R.layout.fragment_add_image, container, false); 
    button = (Button)view.findViewById(R.id.addImage); 

    button.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      Toast.makeText(getActivity(),"Launching Camera",Toast.LENGTH_SHORT).show(); 
      Intent cameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
      cameraIntent.putExtra("putSomething", true); 
      startActivityForResult(cameraIntent, CAMERA_REQUEST); 
     } 
    }); 
    return view; 
} 

public void onActivityResult(int requestCode, int resultCode, Intent data) { 

    super.onActivityResult(requestCode, resultCode, data); 

      if (resultCode == Activity.RESULT_OK) 
      { 
       BitmapFactory.Options options = new BitmapFactory.Options(); 
       options.inSampleSize = 8; 
       //ImageView jpgView = (ImageView)findViewById(R.id.imageView1); 


       Bitmap receipt = BitmapFactory.decodeFile(photo.toString(),options); 

       Intent imagepass = new Intent(getActivity(),StoreImage.class); 
       imagepass.putExtra("imagepass", receipt); 
       startActivity(imagepass); 
      } 
    } 

Сейчас в принимающем деятельности как я показать фото снимаемое камерой, что я должен добавить в файл XML, чтобы отобразить изображение в GridView

вот мой код:

public class StoreImage extends AppCompatActivity { 
@Override 
public void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_store_image); 
    //creating view ids 


    Bitmap receiptimage = (Bitmap) getIntent().getExtras().getParcelable("imagepass"); 
    receipt.setImageBitmap(receiptimage); 
} 

}

ответ

0

Что такое переменная квитанции в вашей операции onCreate for StoreImage, она должна ссылаться на ImageView в xml, как это.

Bitmap receiptimage = (Bitmap) getIntent().getExtras().getParcelable("imagepass"); 
ImageView receipt = (ImageView) findViewById(R.id.receiptImageView); 
receipt.setImageBitmap(receiptimage); 
0

Если вы передадите его как Parcelable, вы обязательно получите ошибку JAVA BINDER FAILURE. Итак, решение таково: если битмап небольшой, например, миниатюра, передайте его как массив байтов и постройте растровое изображение для отображения в следующем действии. Например:

в своей вызывающей деятельности ...

Intent i = new Intent(this, NextActivity.class); 
Bitmap b; // your bitmap 
ByteArrayOutputStream bs = new ByteArrayOutputStream(); 
b.compress(Bitmap.CompressFormat.PNG, 50, bs); 
i.putExtra("byteArray", bs.toByteArray()); 
startActivity(i); 

... и в вашей приемной деятельности

if(getIntent().hasExtra("byteArray")) { 
    ImageView previewThumbnail = new ImageView(this); 
    Bitmap b = BitmapFactory.decodeByteArray(
     getIntent().getByteArrayExtra("byteArray"),0,getIntent().getByteArrayExtra("byteArray").length);   
    previewThumbnail.setImageBitmap(b); 
} 
+0

где добавить этот код в моей деятельности –

+0

первый код, где вы вызовите действие. Я думаю в "onActivityResult". Второй должен быть в методе «onCreate» вашего второго действия, которое вы начинаете с «onActivityResult». –

Смежные вопросы