2015-11-04 30 views
1

所以我的应用程序应该用意图捕获图像,然后在不同的活动中绘制该图像,但它不起作用。这里是我的代码: 主要活动:在不同的活动中绘制位图

b1.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Intent intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); 
      File photo = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES), "pic.jpg"); 
      imageUri = Uri.fromFile(photo); 
      startActivityForResult(intent, 2); 
     } 
    }); 
} 

@Override 
public void onActivityResult(int requestCode, int resultCode, Intent data) { 
    if (requestCode == 2) { 
     Intent k = new Intent(MainActivity.this, FullActivity.class); 
     startActivity(k); 
    } 
} 

次活动:

protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    Uri selectedImage = imageUri; 
    iv.setImageBitmap(bp); 
} 

有人可以帮助我,并显示问题出在哪里。提前致谢。

+0

是什么你试图在第二个活动中做什么?你期望什么结果? –

+0

onActivityResult应该在相同的活动中使用。您可以使用Intent在下一个活动中将位图或照片作为字符串传递。 –

+0

@ChiragSavsani你如何将相机意图输出写入字符串? – Ktokto

回答

1

您需要将Uri作为字符串通过MainActivity中的Intent

@Override 
public void onActivityResult(int requestCode, int resultCode, Intent data) { 
    if (requestCode == 2) { 
     Intent k = new Intent(MainActivity.this, FullActivity.class); 
     k.putExtra("uri", imageUri.toString()); 
     startActivity(k); 
    } 
} 

然后获取字符串中的FullActivity,它解析为Uri,然后用它来设置你的ImageView

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    ... 
    String uriString = getIntent().getStringExtra("uri"); 
    Uri selectedImage = Uri.parse(uriString); 
    // you may also need to call imageView.setImageURI(null); here 
    // or get the bitmap first to use imageView.setImageBitmap(); 
    imageView.setImageURI(selectedImage); 
} 
0

here

当一个活动,您发起退出,给你requestCode 你开始叫,它返回的resultCode为,并从中

任何附加 数据

您的onActivityResult启动时永远不会被呼叫Second activity

尝试送你Main activity收到Bundle

Uri imageUri = intent.getData(); 
Intent intent = new Intent(MainActivity.this, SecondActiviy.class); 
intent.putExtra("mUri", imageUri.toString()); 

uri你可以在SecondActivity

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    String uri= getIntent().getStringExtra("mUri"); 
    Uri imageUri= Uri.parse(uri); 
    Bitmap bitmap=MediaStore.Images.Media.getBitmap(this.getContentResolver(),imageUri); 
} 
0
// Global Declaration<br>  

     private Uri fileUri; 
     private static final int REQUEST_CODE_PHOTO = 101; 

     // Click for capture Image 

     fileUri = getOutputMediaFileUri(REQUEST_CODE_PHOTO); // create a file to save the image 
     Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
     intent.putExtra(MediaStore.EXTRA_OUTPUT, fileUri); // set the image file name 
     startActivityForResult(intent, REQUEST_CODE_PHOTO); 



     @Override 
      protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
       try { 
        super.onActivityResult(requestCode, resultCode, data); 
        if (requestCode == REQUEST_CODE_PHOTO) { 
         if (resultCode == RESULT_OK) { 
         String PATH = fileUri.getPath(); 

         Intent k = new Intent(MainActivity.this, FullActivity.class); 
         k.putExtra("KEY_FOR_PATH, PATH); 
         startActivity(k); 


        } 
       } 
      } 
     } 


     // In FullActivity 

     String pathOfFile = getIntent().getExtras().getString("KEY_FOR_PATH"); 
     Bitmap myBitmap = BitmapFactory.decodeFile(pathOfFile); 

     //Now set myBitmap in ImageView 
     imageView.setImageBitmap(myBitmap) 

//得到这个URI添加这种方法

private Uri getOutputMediaFileUri(int type){ 
     File imagesFolder = new File(Environment.getExternalStorageDirectory(), "YOUR IMAGE FOLDER"); 
     if(imagesFolder != null && !imagesFolder.exists()) { 
      imagesFolder.mkdirs(); 
     } 
     int photonum = AppTypeDetails.getInstance(MainActivity.this).getImageName(); 
     AppTypeDetails.getInstance(ReportTab.this).setImageName(++photonum); 
     File image = new File(imagesFolder, String.format("image%08d.jpeg", photonum)); 
     return Uri.fromFile(image); 
    } 
+0

它说,该方法fileUri = getOutputMediaFileUri(REQUEST_CODE_PHOTO);不可访问或未定义,有任何解决方法? – Ktokto

+0

你是否声明了var全局? –