【问题标题】:ImageView shows same picture on both ImageView clicked by oneImageView 在单击的两个 ImageView 上显示相同的图片
【发布时间】:2018-05-02 10:02:09
【问题描述】:

我有两个ImageView,一个img1,第二个是img2。我想从相机捕获图像以单击 ImageView 并在其上显示。但这里有一个问题,我从img1 上单击图像,而ImageView 上显示的图像相同。如果我点击img1 并从那里点击图片然后img2 也显示相同的图片而不点击那里如果我点击img2 然后点击那里的图片然后该图片显示在img1 上。 我想在两个不同的ImageView 上显示被相机点击的不同图像。

img1.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
            startActivityForResult(intent, requestcode);
        }
    });

    img2.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
            startActivityForResult(intent, requestcode);
        }
    });


@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (this.requestcode  == requestCode && resultCode == RESULT_OK) {
        Bitmap bitmap = (Bitmap) data.getExtras().get("data");
        img.setImageBitmap(bitmap);
        img2.setImageBitmap(bitmap);

    } 
}

【问题讨论】:

  • 在按钮点击时设置一个标志。检查标志 onActivityResult 并根据标志设置图像。

标签: android imageview android-imageview


【解决方案1】:

您需要为 ImageView 使用不同的 Request codes 并使用 switch 的情况,这样就不会出现问题。目前,您对两个Image View 使用相同的Request 代码。

喜欢

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data){
    super.onActivityResult(requestCode, resultCode, data);
    Bitmap bitmap = (Bitmap) data.getExtras().get("data");
    switch(requestCode){
        case 0: // Do your stuff here...
            img1.setImageBitmap(bitmap);
        break;
        case 1: // Do your other stuff here...
            img2.setImageBitmap(bitmap);
        break;

    }
}

内部onClickListener

img1.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
            startActivityForResult(intent, 0);
        }
    });

    img2.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
            startActivityForResult(intent, 1);
        }
    });

【讨论】:

  • java.lang.RuntimeException:将结果 ResultInfo{who=null, request=0, result=0, data=null} 传递给活动 {com.chatting.gourav.maintenance/com.chatting. gourav.maintenance.Detail_Activity}:java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法 'android.os.Bundle android.content.Intent.getExtras()'
  • 引起:java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法'android.os.Bundle android.content.Intent.getExtras()'
  • @gouravmanuja 试试更新的 onActivityResult 方法,现在它可以工作了。将 public void onActivityResult(int requestCode, int resultCode, Intent intent) 更改为 public void onActivityResult(int requestCode, int resultCode, Intent data)
  • 它运行成功,但是当我捕获了两个图像时,我再次单击了一些图像视图,然后我再次看到了相机,并且当我单击屏幕的另一侧时,可以选择再次捕获此错误发生了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-03-27
  • 2012-09-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-17
  • 1970-01-01
相关资源
最近更新 更多