0

私は TabHost を持っており、その中に 4 つの異なるアクティビティがあります。最初のタブには、ギャラリーから画像を選択するか、カメラから写真を撮るオプションがあります。今、私は public void onActivityResult(int requestCode, int resultcode, Intent intent) メソッドを使用しました..しかし、それはTabHostで呼び出されていません..tabHostなしでは完全に機能しています...これを解決する方法..これが私のコードです..コード全体を確認してください..事前に感謝します..

tblTreePhoto.setOnClickListener(new OnClickListener() 
        {

            @Override
            public void onClick(View arg0) 
            {
                final AlertDialog.Builder alertDialog = new AlertDialog.Builder(getParent());
                alertDialog.setTitle("Select Photo");
                alertDialog.setPositiveButton("Take Photo", new DialogInterface.OnClickListener() 
                {

                    @Override
                    public void onClick(DialogInterface arg0, int arg1) 
                    {
                        if(Tree_Image.count<3)
                        {
                            Intent i1 = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
                            File out = Environment.getExternalStorageDirectory();
                            out = new File(out, "newImage.jpg");
                            i1.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(out));
                            getParent().startActivityForResult(i1, 10); 
                        }
                        else
                        {
                            Toast.makeText(getApplicationContext(), "You can not add more than 2 photos" , 1).show();
                        }
                    }

                });

                alertDialog.setNeutralButton("Gallery", new DialogInterface.OnClickListener() 
                {

                    @Override
                    public void onClick(DialogInterface dialog, int which) 
                    {   
                        if(Tree_Image.count<3)
                        {
                            Intent intent = new Intent();
                            intent.setType("image/*");
                            intent.setAction(Intent.ACTION_GET_CONTENT);
                            getParent().startActivityForResult(Intent.createChooser(intent,"Select Picture"),1);
                        }   
                        else
                        {
                            Toast.makeText(getApplicationContext(), "You can not add more than 2 photos" , 1).show();

                        }
                    }
                });
                alertDialog.setNegativeButton("View Selected Photos", new DialogInterface.OnClickListener() 
                {

                    @Override
                    public void onClick(DialogInterface arg0, int arg1) 
                    {
                        Intent i = new Intent(getParent(),Show_Selected_Images.class);
                        //i.putExtra("cqname", client_name.getText().toString());
                        startActivity(i);
                    }

                });

                alertDialog.show();

            }
        });

これは私の onActivityResult メソッドです:-

 protected void onActivityResult(int requestCode, int resultcode, Intent intent)
     {
         int orientation =0;
         Log.d("result ","code uis"+resultcode);

         super.onActivityResult(requestCode, resultcode, intent);

         if (requestCode == 1)
         {
             if (intent != null && resultcode == RESULT_OK)
             {             

                 Uri selectedImage = intent.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);
                   Log.v("log","filePath is : "+filePath);

                   cursor.close();
                   try 
                   {
                        ExifInterface exif = new ExifInterface(filePath);
                         orientation = exif.getAttributeInt(ExifInterface.TAG_ORIENTATION, 1);
                        //Toast.makeText(getApplicationContext(), ""+orientation, 1).show();
                        Log.v("log", "ort is "+orientation);

                   } 
                   catch (IOException e)
                   {
                       e.printStackTrace();
                   }

                   if(bmp != null && !bmp.isRecycled())
                   {
                       bmp = null;               
                   }

                   File f = new File(filePath);
                   bmp = decodeFile(f,400,400);

                   if (orientation==6)
                   {
                        Matrix matrix = new Matrix();
                        matrix.postRotate(90);
                        bmp = Bitmap.createBitmap(bmp, 0, 0, bmp.getWidth(), bmp.getHeight(), matrix, true);
                   }
                   else if (orientation==8)
                   {
                        Matrix matrix = new Matrix();
                        matrix.postRotate(270);
                        bmp = Bitmap.createBitmap(bmp, 0, 0, bmp.getWidth(), bmp.getHeight(), matrix, true);
                   }

                   else if (orientation==3)
                   {
                        Matrix matrix = new Matrix();
                        matrix.postRotate(180);
                        bmp = Bitmap.createBitmap(bmp, 0, 0, bmp.getWidth(), bmp.getHeight(), matrix, true);
                   }

                   Log.v("log", "before width is "+bmp.getWidth() + " and height is "+bmp.getHeight());

                   bt=Bitmap.createScaledBitmap(bmp,320, 300, false);
                  // Bitmap bt_thumb = Bitmap.createScaledBitmap(bmp, 70, 70, false);




                   Intent i = new Intent(Tree_Assessmnt_Tree.this,Tree_Image.class);
                   i.putExtra("userid", uid);
                  // TabGroupActivity parentActivity = (TabGroupActivity) getParent();
                   startActivity(i);

             }
             else
             {
                 Log.v("log", "Photopicker canceled");           
             }
         }
         else if (requestCode == 10)
         {

           File out = new File(Environment.getExternalStorageDirectory(), "newImage.jpg");

             if(!out.exists())
             {
                 Log.v("log", "file not found");
                 Toast.makeText(getBaseContext(),"Error while capturing image", Toast.LENGTH_LONG).show();

                return;

            }

             Log.v("log", "file "+out.getAbsolutePath());
             File f = new File(out.getAbsolutePath());

             try
             {

                ExifInterface exif = new ExifInterface(out.getAbsolutePath());
                 orientation = exif.getAttributeInt(ExifInterface.TAG_ORIENTATION, 1);
                //Toast.makeText(getApplicationContext(), ""+orientation, 1).show();
                Log.v("log", "ort is "+orientation);

           } 
             catch (IOException e)
             {
                 e.printStackTrace();
             }

             Bitmap photo =decodeFile(f,400,400);
             if (orientation==6)
             {
                    Matrix matrix = new Matrix();
                    matrix.postRotate(90);
                    photo = Bitmap.createBitmap(photo, 0, 0, photo.getWidth(), photo.getHeight(), matrix, true);
             }
             else if (orientation==8)
             {
                    Matrix matrix = new Matrix();
                    matrix.postRotate(270);
                    photo = Bitmap.createBitmap(photo, 0, 0, photo.getWidth(), photo.getHeight(), matrix, true);
             }

             else if (orientation==3)
             {
                    Matrix matrix = new Matrix();
                    matrix.postRotate(180);
                    photo = Bitmap.createBitmap(photo, 0, 0, photo.getWidth(), photo.getHeight(), matrix, true);
             }



           //Bitmap photo = (Bitmap) intent.getExtras().get("data"); 
           //bt=Bitmap.createScaledBitmap(photo, 380, 520, false);
           bt=photo;
          // bt=Bitmap.createScaledBitmap(photo,320, 300, false);
//         Log.v("log", "before width is "+bt.getWidth() + " and height is "+bt.getHeight());

                /*  gamePic.setBackgroundResource(0);
                  gamePic.setImageBitmap(photo);*/
           //txtPhoto.setText(""+DrawOnImage_Activity.count);


           Intent i = new Intent(Tree_Assessmnt_Tree.this,Tree_Image.class);
           i.putExtra("userid", uid);
           startActivity(i);

         }

         else if(requestCode==6)
         {
              if (intent == null)
              {
                  Log.v("log", "Null data, but RESULT_OK, from image picker!");
                       Toast t = Toast.makeText(this, "No Photo Slected",Toast.LENGTH_SHORT);
                       t.show();

                       return;
              }
         }
     }
4

2 に答える 2

1

その他の方法はこれです。

  1. ボタンをクリックすると(インテントを開く)、別のアクティビティを開きます。
  2. 別のアクティビティの onCreate() でそのインテントを開きます。
  3. onActivityResult は、前のアクティビティにある静的データを設定し、finish() を呼び出します。
  4. これにより、そのようなアクティビティを開いたことが誰にも知られず、データを取得できます。

:)

于 2012-11-08T10:54:53.383 に答える
0

あなたは電話をかけstartActivityForResult()ていますgetParent()

を削除してみてくださいgetParent()

于 2012-11-08T10:39:28.583 に答える