仅在选择图像时才上传图像

时间:2018-01-30 12:10:48

标签: android if-statement select upload imageview

我使用以下代码从图库中选择图像并使用ImageView显示它:

@Override
protected void onActivityResult(int RC, int RQC, Intent I) {
    super.onActivityResult(RC, RQC, I);
    if (RC == 1 && RQC == RESULT_OK && I != null && I.getData() != null) {
        Uri uri = I.getData();
        try {
            bitmap = MediaStore.Images.Media.getBitmap(getContentResolver(), uri);
            imageView.setImageBitmap(bitmap);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

目前,使用方法ImageUploadToServerFunction(),即使没有选择图像,也会启动上传。最后,应用程序崩溃了。

我的问题: 如果没有选择图像,我该怎么做,不开始上传并发布Toast

if (imageView == ???) {
    ImageUploadToServerFunction();
} else {
    Toast.makeText(MainActivity.this, "No image selected!", Toast.LENGTH_LONG).show();
}

更新的答案:单击按钮(android:onClick =" OnButton")时执行此if语句,如果没有选择图像,应用程序将以与之前相同的方式。为什么?怎么了?



public class MainActivity extends AppCompatActivity {
    ImageView imageView;
  
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_anghinzu);
        
        imageView = (ImageView)findViewById(R.id.ivFoto);
        SelectImageGallery = (ImageButton)findViewById(R.id.btnChoose);

        SelectImageGallery.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent intent = new Intent();
                intent.setType("image/*");
                intent.setAction(Intent.ACTION_GET_CONTENT);
                startActivityForResult(Intent.createChooser(intent, "Select Image From Gallery"), 1);
            }
        });
    }
        
    @Override
    protected void onActivityResult(int RC, int RQC, Intent I) {
        super.onActivityResult(RC, RQC, I);
        if (RC == 1 && RQC == RESULT_OK && I != null && I.getData() != null) {
            Uri uri = I.getData();
            try {
                bitmap = MediaStore.Images.Media.getBitmap(getContentResolver(), uri);
                imageView.setImageBitmap(bitmap);
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
    
    public void ImageUploadToServerFunction(){
      ...
    }
    
    public void OnButton(View view) {
        //Upload Image
        if (hasImage(imageView)) {
            ImageUploadToServerFunction();
        } else {
            Toast.makeText(MainActivity.this, "Kein Bild ausgewählt!", Toast.LENGTH_LONG).show();
        }
    }
}




2 个答案:

答案 0 :(得分:0)

您可以检查ImageView是否有任何图像,

private boolean hasImage(@NonNull ImageView view) {
    Drawable drawable = view.getDrawable();
    boolean hasImage = (drawable != null);

    if (hasImage && (drawable instanceof BitmapDrawable)) {
       hasImage = ((BitmapDrawable)drawable).getBitmap() != null;
    }

    return hasImage;
}

答案 1 :(得分:0)

试试这个:

if(imageView.getDrawable() == null){
    // Image not exist...
} else {
    // Image Exists!
}

这段代码工作正常,我刚从StackOverflow找到它。