我要在java中迈出第一步: 我有以下问题。来自我的受保护类'onActivityResult' 我需要在我的类'ImageUploadTask'中使用String。我怎么能这样做?
@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) {
}
}
答案 0 :(得分:1)
我要在java中迈出第一步:我有以下问题。从 我的受保护类'onActivityResult'我需要在我的 class'ImageUploadTask'。我怎么能这样做?
您可能希望将 fileName 变量传递给AsyncTask子类。您有几个选择:
您可以声明“class-scope”变量并仅在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类的内部类,因此您可以直接访问在“parent”类中声明的所有变量。
答案 1 :(得分:0)
如果您使用ImageUploadTask
作为活动类的嵌入类,那么您可以这样做:
MyActivityClass.this.activityfunction();
or
MyActivityClass.this.activityFieldVariable;