0

私はこの問題を2時間解決しようとしていますが、まだ解決策が見つかりません。

私のアクティビティには、カメラAPIを使用して写真を撮るか、ギャラリーから画像を閲覧するオプションがあります。画像を取得して同じアクティビティで表示できます、問題は他のアクティビティでも必要になることです。

私の知る限り、これを行うための最良の方法は、SDカードに画像を保存することですが、私はそれを試みましたが、エラーとエラーしか発生しません。

手を貸していただけませんか。

ありがとう!

    public void onClick(View arg0) {

    // TODO Auto-generated method stub
    switch(arg0.getId()){

        case R.id.save:

            if (et.getText() !=null && thumbnail != null){

                 TableRow tr = new TableRow(this);
                 ImageView view = new ImageView(this);
                 TextView view2 = new TextView(this);
                 Button view3 = new Button(this);
                 view3.setOnClickListener(this);



                 view3.setId(i);


                 view.setImageBitmap(thumbnail);
                 view.setPadding(1, 5, 0, 0);
                 view.setScaleType(ImageView.ScaleType.CENTER_INSIDE);

                 Calendar c = Calendar.getInstance();
                 SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd");

                 titulo[i]=""+et.getText();
                 mensaje[i]=""+et1.getText();
                 fotos[i]=thumbnail;


                 view2.setText(titulo[i] +"                 "+ dateFormat.format(c.getTime()) );

                 view2.setGravity(Gravity.CENTER_VERTICAL);
                 view2.setPadding(5, 0, 0, 0);
                 i++;

                 view3.setGravity(Gravity.RIGHT);
                 view3.setGravity(Gravity.CENTER_VERTICAL);

                 DisplayMetrics metrics = new DisplayMetrics();
                 getWindowManager().getDefaultDisplay().getMetrics(metrics);

                 tr.addView(view, metrics.widthPixels/3, 150);
                 tr.addView(view2, metrics.widthPixels/2, 150);
                 tr.addView(view3, metrics.widthPixels/6, 20);
                 tl.addView (tr, 0);


                 final Toast toastMensaje = Toast.makeText(getApplicationContext(),
                            "Tu entrada se cargó correctamente", Toast.LENGTH_SHORT);
                    toastMensaje.setGravity(Gravity.CENTER, 0, 0);
                    toastMensaje.show();

                    et.setText("");
                    et1.setText("");
                    i1.setVisibility(View.GONE);


            }

            else{

                final Toast toastMensaje = Toast.makeText(getApplicationContext(),
                        "Tienes que añadir un título y una foto", Toast.LENGTH_LONG);
                toastMensaje.setGravity(Gravity.CENTER, 0, 0);
                toastMensaje.show();

            }


        break;

        case R.id.photo:

            Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);  
            startActivityForResult(cameraIntent, CAMERA_PIC_REQUEST);


        break;

        case R.id.gallery:

            Intent intent = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
             startActivityForResult(intent, TFRequestCodes);

        break;

        default:



            Intent openActivity = new Intent(Second.this, Recuerdos.class);
            openActivity.putExtra("titulo", titulo[arg0.getId()]);
            openActivity.putExtra("mensaje", mensaje[arg0.getId()]);
            openActivity.putExtra("URI", selectedImage);


            startActivity(openActivity);

        break;

    }

}



protected void onActivityResult(int requestCode, int resultCode, Intent data) {  
    if (requestCode == CAMERA_PIC_REQUEST && resultCode == RESULT_OK) {  
        // do something  

        thumbnail = (Bitmap) data.getExtras().get("data");
        i1.setImageBitmap(thumbnail);



    }  

    else if (requestCode == TFRequestCodes && resultCode == RESULT_OK) {  
        // do something



        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 filePath = cursor.getString(columnIndex);
        cursor.close();


        thumbnail = BitmapFactory.decodeFile(filePath);
        i1.setImageBitmap(thumbnail);


    }  


}  

}
4

2 に答える 2

4

画像データの代わりに画像URIを渡す方がよいでしょう。

このonActivityResult()メソッドでは、画像のURIを取得できます。

Uri imageUri = data.getData();

次に、このURIを開始するときに、他のアクティビティに渡すことができます。

    Intent intent = new Intent(context, MyNextActivity.class);
    intent.setData(imageUri);
    startActivity(intent);

次のアクティビティでは、このURIを取得できます。

Uri imageUri = getIntent().getData();

次に、ImageViewに画像を表示するには:

imageView.setImageURI(imageUri);
于 2012-08-31T14:38:32.230 に答える
0

このコードで試してみてください、

FirstActivityで、

 Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.icon);

        Intent intent = new Intent();
        intent.setClass(AndroidPassingBitmap.this, AndroidReceiveBitmap.class);
        intent.putExtra("Bitmap", bitmap);
        startActivity(intent);

SecondActivityでは、

Bitmap bitmap = (Bitmap)this.getIntent().getParcelableExtra("Bitmap");
  ImageView viewBitmap = (ImageView)findViewById(R.id.bitmapview);

  viewBitmap.setImageBitmap(bitmap);
于 2012-08-31T14:37:33.183 に答える