【发布时间】:2014-09-25 15:50:55
【问题描述】:
我需要为我的应用程序做这样的功能:当用户按下“保存”按钮时,选定的图像将被上传到 Flickr,然后从 Flickr 获取上传图像的来源以存储到数据库中。我使用 flickrj-android 库来做。这是我的代码:
//call this function when "Save" button is clicked
Intent intent = new Intent(getApplicationContext(),FlickrjActivity.class);
intent.putExtra("flickImagePath", currentScreenshot);
startActivityForResult(intent, UPLOAD_FLICKR);
Log.i("ordering","afterStartFlickrUpload");
onActivityResult()
switch(requestCode){
case UPLOAD_FLICKR:
Log.i("ordering","beforeResultCode");
if(resultCode == RESULT_OK){
String flickr_source = data.getStringExtra("flickr_source");
Log.i("flickr",flickr_source);
}
break;
}
我有一个名为 FlickrjActivity 的 Activity,它创建了一个名为 UploadPhotoTask 的 AsyncTask UploadPhotoTask 有一个名为 onPostExecute 的方法,它有一个参数是上传照片的 Flickr 照片 ID 作为 Flickr API 的响应
protected void onPostExecute(String response) {
Log.i("photoID",response);
}
这是 FlickrjActivity 的 load() 方法:
private void load(OAuth oauth) {
if (oauth != null) {
UploadPhotoTask taskUpload = new UploadPhotoTask(this, new File(
path));
taskUpload.setOnUploadDone(new UploadPhotoTask.onUploadDone() {
@Override
public void onComplete() {
Intent intent = new Intent();
intent.putExtra("flickr_source", "This is a link");
setResult(RESULT_OK, intent);
finish();
}
});
taskUpload.execute(oauth);
}
}
我的预期过程是主要活动创建一个调用 FlickrjActivity 的意图,该意图将创建 UploadPhotoTask 以将照片上传到 Flickr,获取 photoID,然后使用 setResult(RESULT_OK,intent); 和 @987654328 将此 ID 返回到主要活动@
但是在我按下保存按钮后,onActivityResult() 自 Log.i("ordering","beforeResultCode"); 调用后在上传运行之前将消息打印到 Logcat,因此 if(resultCode == RESULT_OK) 内的块从未被调用,因为 onActivityResult() 不会在上传完成后再次被调用。那么为什么onActivityResult() 在finish() 或FlickrjActivity 之前被调用?
【问题讨论】:
标签: android android-intent flickr onactivityresult flickrj