java - 如何在另一个类中移动 @Override 方法
问题描述
我的活动中有一些方法,并且想将它们移动到不同的类,因为我稍后会再次使用它。这允许我将图像上传到我的服务器,它在我的活动中运行良好,但我想移动它。
问题,我是java的初学者,我不知道怎么做,有人能告诉我怎么做吗?
谢谢您的帮助 !
下面,我要移动的代码
@Override
protected void onResume() {
super.onResume();
uploadReceiver.register(this);
}
@Override
protected void onPause() {
super.onPause();
uploadReceiver.unregister(this);
}
private void pickFile() {
Intent intent = new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(Intent.createChooser(intent, "Select image"), PICK_IMAGE_REQUEST);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
if (requestCode == PICK_IMAGE_REQUEST && resultCode == Activity.RESULT_OK && data != null && data.getData() != null) {
uploadMultipart(data.getData().toString());
try {
bitmap = MediaStore.Images.Media.getBitmap(getContentResolver(), data.getData());
pictureProfileInformation.setImageBitmap(bitmap);
} catch (IOException e) {
e.printStackTrace();
}
} else {
super.onActivityResult(requestCode, resultCode, data);
}
}
private String getPath(Uri uri){
Cursor cursor = getContentResolver().query(uri, null, null, null, null);
cursor.moveToFirst();
String document_id = cursor.getString(0);
document_id = document_id.substring(document_id.lastIndexOf(":")+1);
cursor.close();
cursor=getContentResolver().query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, null, MediaStore.Images.Media._ID+" = ? ", new String[]{document_id}, null);
cursor.moveToFirst();
String path = cursor.getString(cursor.getColumnIndex(MediaStore.Images.Media.DATA));
cursor.close();
return path;
}
private void uploadMultipart(String filePath) {
try {
String uploadId = UUID.randomUUID().toString();
uploadReceiver.setUploadID(uploadId);
String name = tilUsernameInformation.getEditText().getText().toString().trim();
String path = getPath(Uri.parse(filePath));
String extension = path.substring(path.indexOf("."));
String sessionPhoto = (name+extension).toLowerCase();
String id_user =sessionManager.getUserData().get(sessionManager.ID_USER);
new MultipartUploadRequest(this, uploadId, URL_UPLOAD)
.setMethod("POST")
.addFileToUpload(filePath, "image")
.addParameter("name", name)
.addParameter("id_user", id_user)
.setNotificationConfig(new UploadNotificationConfig())
.setMaxRetries(0)
.startUpload();
sessionManager.changeData("PHOTO", sessionPhoto);
} catch (Exception exc) {
Log.e("Upload start error", exc.getMessage(), exc);
}
}
@Override
public void onProgress(Context context, UploadInfo uploadInfo) {
showMessage("Progress: " + uploadInfo.getProgressPercent());
}
@Override
public void onError(Context context, UploadInfo uploadInfo, ServerResponse serverResponse, Exception exception) {
showMessage("Error uploading. Server response code: " + serverResponse.getHttpCode() + ", body: " + serverResponse.getBodyAsString());
}
@Override
public void onCompleted(Context context, UploadInfo uploadInfo, ServerResponse serverResponse) {
showMessage("Completed. Server response code: " + serverResponse.getHttpCode() + ", body: " + serverResponse.getBodyAsString());
}
@Override
public void onCancelled(Context context, UploadInfo uploadInfo) {
showMessage("Upload cancelled");
}
private void showMessage(String message) {
Toast.makeText(this, message, Toast.LENGTH_SHORT).show();
Log.i("Message", message);
}
解决方案
您可以使用简单的层次结构来管理它
在父类(也可能是抽象类)中,您可以定义要在活动中重用的这些通用方法
public abstract class ParentActivity {
[some code]
@Override
protected void onResume() {
super.onResume();
uploadReceiver.register(this);
}
@Override
protected void onPause() {
super.onPause();
uploadReceiver.unregister(this);
}
[other Override methods]
}
然后你的活动可以扩展它
public class MyActivity extends ParentActivity {
[code]
}
推荐阅读
- java - 在 Lambda 函数超时之前获取 aws 转录响应
- ios - DJI 虚拟摇杆控制未正确应用
- javascript - Javascript在onclick时将按钮元素存储在变量中
- c# - SqlConnection.CacheConnectionStringProperties() 的 .NET 代码中的 NullReferenceException
- php - php Excel deactive 科学格式
- c# - Xamarin Forms - 从 C# 中的 StackLayout 中删除子元素
- r - 为什么我不能从 R 的分布中积分为零?
- javascript - 单击以附加按钮,然后再次返回。?
- html - 将某些祖先设置为不剪辑元素
- c# - 有没有办法使用 EF.Functions.Like 和 ESCAPE sql 关键字来防止通配符