0

我将在 java 中迈出第一步:我有以下问题。从我的受保护类“onActivityResult”中,我需要在我的类“ImageUploadTask”中有字符串。我怎样才能做到这一点?

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    switch (requestCode) {
    case PICK_IMAGE:
        if (resultCode == Activity.RESULT_OK) {
            Uri selectedImageUri = data.getData();
            String filePath = null;

            try {
                ...

                } else if (filemanagerstring != null) {
                    filePath = filemanagerstring;
                } 
                if (filePath != null) {
                    decodeFile(filePath);
                    // get fileName //
                    String fileName = new File(filePath).getName();
                    Log.e(TAG, "Filename:" + fileName);


                } 
        break;
    default:
    }
}

class ImageUploadTask extends AsyncTask<Void, Void, String> {
    private static final String TAG = "GalleryPreviewView";

    @Override
    protected String doInBackground(Void... unsued) {
        try {
            ....
                     Log.e(TAG, "Filename:" + fileName);
        }

    }

    @Override
    protected void onProgressUpdate(Void... unsued) {

    }

}
4

2 回答 2

1

我将在 java 中迈出第一步:我有以下问题。从我的受保护类“onActivityResult”中,我需要在我的类“ImageUploadTask”中有字符串。我怎样才能做到这一点?

可能您想将fileName变量传递给您的 AsyncTask 子类。你有几个选择:

您可以声明“类范围”变量并仅在 onActivityResult 方法中对其进行初始化:

if (filePath != null) {
   decodeFile(filePath);
   fileName = new File(filePath).getName();
   Log.e(TAG, "Filename:" + fileName);
}

然后像这样将变量传递给 AsyncTask 类:

class ImageUploadTask extends AsyncTask<String, Void, String> {
    private static final String TAG = "GalleryPreviewView";

    @Override
    protected String doInBackground(String... params) {
       String fileName = params[0];
    }

一个用法:

ImageUploadTask task = new ImageUploadTask();
task.execute(fileName);

但是由于您的 ImageUploadTask 可能是您的 Activity 类的内部类,您可以直接访问在“父”类中声明的所有变量。

于 2013-04-12T17:18:06.813 回答
0

如果您将ImageUploadTask其用作活动类的嵌入式类,则可以执行以下操作:

MyActivityClass.this.activityfunction();

or 

MyActivityClass.this.activityFieldVariable;
于 2013-04-12T17:17:44.653 回答