好吧,我试图创建一个单独的帮助器类,该类将具有可用于许多不同活动的方法,以避免重复代码。
我遇到了一个问题。我正在尝试放入startActivityForResult,如果我将Activity作为参数传递给方法,则可以这样做。但是我不知道如何在此帮助程序类上@Override onActivityResult。
这甚至有可能做到吗?如果没有,应该如何解决?我不想在10个不同的活动中编写相同的onActivityResult。
编辑:显示有问题的代码。
我正在使用Firebase,这是我要在onActivityResult上重复的代码
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(requestCode == RC_PHOTO_PICKER && resultCode == RESULT_OK){
Uri selectedImageUri = data.getData();
final StorageReference photoRef = mChatPhotosStorageReference.child(selectedImageUri.getLastPathSegment());
Task<Uri> urlTask = photoRef.putFile(selectedImageUri).continueWithTask(new Continuation<UploadTask.TaskSnapshot, Task<Uri>>() {
@Override
public Task<Uri> then(@NonNull Task<UploadTask.TaskSnapshot> task) throws Exception {
if(!task.isSuccessful()) {
throw task.getException();
} else {
return photoRef.getDownloadUrl();
}
}
}).addOnCompleteListener(new OnCompleteListener<Uri>() {
@Override
public void onComplete(@NonNull Task<Uri> task) {
if(task.isSuccessful()){
Uri downloadUri = task.getResult();
FriendlyMessage friendlyMessage =
new FriendlyMessage(null, mUsername, downloadUri.toString());
mMessagesDatabaseReference.push().setValue(friendlyMessage);
} else {
Toast.makeText(getApplicationContext(), "Failure", Toast.LENGTH_LONG).show();
}
}
});
}
}
这是startActivityForResult的代码
mPhotoPickerButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setType("image/jpeg");
intent.putExtra(Intent.EXTRA_LOCAL_ONLY, true);
startActivityForResult(Intent.createChooser(intent, "Complete action using"), RC_PHOTO_PICKER);
}
});
我还计划使用Firebase AuthUI,这将要求使用onActivityResult