我已经成功打开相机,单击图像并在InageView中显示,但是当我单击“上载图像”按钮时,“ ELSE”条件正在执行,而不是“ if”条件
这是我的活动代码:
chooseImage.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
if (takePictureIntent.resolveActivity(getPackageManager()) != null) {
startActivityForResult(takePictureIntent, REQUEST_IMAGE_CAPTURE);
}
}
});
btnUploadImage.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (mUploadTask != null && mUploadTask.isInProgress()) {
Toast.makeText(GalleryActivity.this, "Upload in progress", Toast.LENGTH_LONG).show();
} else {
uploadImage();
}
}
});
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == REQUEST_IMAGE_CAPTURE && resultCode == RESULT_OK && data!=null) {
Bundle extras = data.getExtras();
imageBitmap = (Bitmap) extras.get("data");
imgPreview.setImageBitmap(imageBitmap);
imgUrl = data.getData();
}
}
这是我的UploadImage方法:
private void uploadImage() {
if (imgUrl != null) {
final StorageReference fileReference = mStorageRef.child(System.currentTimeMillis() + "." + "jpg");
mUploadTask = fileReference.putFile(imgUrl)
.addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
@Override
public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
uploadProgress.setProgress(0);
}
}, 500);
fileReference.getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
@Override
public void onSuccess(Uri uri) {
Upload upload = new Upload( uri.toString());
String uploadID = mDatabaseRef.push().getKey();
mDatabaseRef.child(uploadID).setValue(upload);
Toast.makeText(GalleryActivity.this, "Upload successfully", Toast.LENGTH_LONG).show();
imgPreview.setImageResource(R.drawable.imagepreview);
// imgDescription.setText("");
}
});
}
})
.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Toast.makeText(GalleryActivity.this, e.getMessage(), Toast.LENGTH_LONG).show();
}
})
.addOnProgressListener(new OnProgressListener<UploadTask.TaskSnapshot>() {
@Override
public void onProgress(UploadTask.TaskSnapshot taskSnapshot) {
double progress = (100.0 * taskSnapshot.getBytesTransferred() / taskSnapshot.getTotalByteCount());
uploadProgress.setProgress((int) progress);
}
});
} else {
Toast.makeText(GalleryActivity.this, "No file selected", Toast.LENGTH_SHORT).show();
}
}
这是我的布局XML代码:
<ImageView
android:id="@+id/imgPreview"
android:layout_width="match_parent"
android:layout_height="220dp"
android:layout_below="@+id/txtUploadImage"
android:layout_marginTop="20dp"
android:layout_marginBottom="20dp"
android:src="@drawable/imagepreview" />
<Button
android:id="@+id/chooseImage"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/uploadProgress"
android:layout_marginTop="40dp"
android:drawableStart="@drawable/icon_camera"
android:text="Chooese Image from camera"
android:textSize="18sp" />
<Button
android:id="@+id/btnUploadImage"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_marginStart="20dp"
android:layout_marginBottom="10dp"
android:drawableStart="@drawable/icon_upload"
android:text="Upload Image"
android:textSize="18sp" />
UploadImage方法中的“ else”条件正在执行everyTime(未选择文件),如何成功获取URI并上传图像?
答案 0 :(得分:0)
btnUploadImage.setOnClickListener(new.
View.OnClickListener() {
@Override
public void onClick(View view) {
if (mUploadTask != null &&
mUploadTask.isInProgress()) {
Toast.makeText(GalleryActivity.this, "Upload in.
progress", Toast.LENGTH_LONG).show();
} else {
uploadImage();
}
}
});
在上面的代码中,您正在检查是否满足条件
mUploadTask是否不为null,然后执行...。
这就是其他被执行的原因
因为mUploadTask仍然为空,即当您
时为null
点击上传按钮。