2014-10-13 3 views
4

Я создаю динамическую кнопку для захвата фотографии с android. Динамическая кнопка находится в другом классе из основного вида деятельности. Я получил Can't resolve Ошибка на моем startActivityForResult здесь my codeНе удается разрешить действие для результата

Буду признателен за любую помощь. Спасибо.

+0

как вы называете startActivityForResult? – ToYonos

+0

Вы видите мой код из прикрепленной ссылки? –

+0

Плохо, я не видел эту часть кода. – ToYonos

ответ

3

Попробуйте этот путь, надейтесь, что это поможет вам решить вашу проблему.

Держите ум пользовательский класс не может переопределить onActivityResult() только активность расширенный класс переопределения onActivityResult(), поэтому вы должны переопределить onActivityResult() в Actitvity и дал обратный вызов пользовательского класса, как показано ниже

public class MainActivity extends Activity { 

    private JsonGuiImageView jsonGuiImageView; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     jsonGuiImageView = new JsonGuiImageView(this); 
     setContentView(jsonGuiImageView); 
    } 

    @Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data){ 
     if(requestCode == jsonGuiImageView.CAMERA_REQUEST && resultCode == Activity.RESULT_OK){ 
      jsonGuiImageView.setPhoto(); 
     } 
    } 
} 

public class JsonGuiImageView extends LinearLayout { 
    private ImageView imageView; 
    private ImageButton button; 
    private Intent cameraIntent; 
    private Bitmap photo; 
    private Context context; 
    public static int CAMERA_REQUEST = 1777; 
    private String imagePath; 

    public JsonGuiImageView(Context context){ 
     super(context); 
     this.context = context; 
     this.setOrientation(VERTICAL); 
     this.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT)); 
     this.setGravity(Gravity.CENTER); 
     button = new ImageButton(this.context); 
     button.setLayoutParams(new ViewGroup.LayoutParams(60, 60)); 
     button.setImageResource(R.drawable.ic_launcher); 
     button.setMaxHeight(60); 
     button.setMinimumHeight(60); 
     button.setMaxWidth(60); 
     button.setMinimumWidth(60); 
     button.setOnClickListener(AddImage); 
     this.addView(button); 
    } 

    public JsonGuiImageView(Context context, AttributeSet attributeSet){ 
     super(context, attributeSet); 
    } 

    OnClickListener AddImage = new OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      File file = new File(Environment.getExternalStorageDirectory() + File.separator + "image.jpg"); 
      imagePath = file.getAbsolutePath(); 
      cameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
      cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT,Uri.fromFile(file)); 
      if (cameraIntent.resolveActivity(((Activity)context).getPackageManager()) != null) { 
       ((Activity)context).startActivityForResult(cameraIntent, CAMERA_REQUEST); 
      } 
     } 
    }; 

    public void setPhoto(){ 
     photo = decodeSampledBitmapFromFile(imagePath, 480, 640); 
     imageView = new ImageView(getContext()); 
     imageView.setMaxHeight(60); 
     imageView.setMinimumHeight(60); 
     imageView.setMaxWidth(60); 
     imageView.setMinimumWidth(60); 
     imageView.setImageBitmap(photo); 
     this.addView(imageView); 
    } 

    public static Bitmap decodeSampledBitmapFromFile(String path, int reqWidth, int reqHeight) 
    { 
     Bitmap decode, rotatedBitmap = null; 

     //First decode with inJustDecodeBounds=true to check dimensions 
     final BitmapFactory.Options options = new BitmapFactory.Options(); 
     options.inJustDecodeBounds = true; 
     BitmapFactory.decodeFile(path, options); 

     // Calculate inSampleSize, Raw height and width of image 
     final int height = options.outHeight; 
     final int width = options.outWidth; 
     options.inPreferredConfig = Bitmap.Config.RGB_565; 
     int inSampleSize = 8; 

     if (height > reqHeight) 
     { 
      inSampleSize = Math.round((float)height/(float)reqHeight); 
     } 
     int expectedWidth = width/inSampleSize; 

     if (expectedWidth > reqWidth) 
     { 
      //if(Math.round((float)width/(float)reqWidth) > inSampleSize) // If bigger SampSize.. 
      inSampleSize = Math.round((float)width/(float)reqWidth); 
     } 

     options.inSampleSize = inSampleSize; 

     // Decode bitmap with inSampleSize set 
     options.inJustDecodeBounds = false; 
     options.inPurgeable = true; 
     options.inInputShareable = true; 
     options.inTempStorage = new byte[16 * 1024]; 

     try{ 
      ExifInterface exifInterface = new ExifInterface(path); 
      int orientation = exifInterface.getAttributeInt(ExifInterface.TAG_ORIENTATION, ExifInterface.ORIENTATION_NORMAL); 

      int rotation = 0; 
      switch (orientation){ 
       case ExifInterface.ORIENTATION_ROTATE_90 : 
        rotation = 90; 
        break; 
       case ExifInterface.ORIENTATION_ROTATE_180 : 
        rotation = 180; 
        break; 
       case ExifInterface.ORIENTATION_ROTATE_270 : 
        rotation = 270; 
        break; 
       default: break; 
      } 

      Matrix matrix = new Matrix(); 
      matrix.postRotate(rotation); 

      decode = BitmapFactory.decodeFile(path, options); 
      rotatedBitmap = Bitmap.createBitmap(decode, 0, 0, decode.getWidth(), decode.getHeight(), matrix, true); 
     } catch (IOException e){ 
      e.printStackTrace(); 
     } 

     return rotatedBitmap; 
    } 
} 

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

  • Нет связанных вопросов^_^