首页 > 解决方案 > 如何在另一个类中移动 @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);
}

标签: javaandroid-studio

解决方案


您可以使用简单的层次结构来管理它

在父类(也可能是抽象类)中,您可以定义要在活动中重用的这些通用方法

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]
}

推荐阅读