首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么在上传到Flickr之前调用onActivityResult()会结束使用Flickrj-android

为什么在上传到Flickr之前调用onActivityResult()会结束使用Flickrj-android
EN

Stack Overflow用户
提问于 2014-09-25 23:50:56
回答 1查看 103关注 0票数 0

我需要为我的应用程序做这样的功能:当用户按下“保存”按钮时,选择的图像将被上传到Flickr,然后从Flickr获得上传图像的源到数据库中。我用flickrj-android库来做。这是我的代码:

代码语言:javascript
复制
//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()

代码语言:javascript
复制
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的活动,它创建一个名为AsyncTask的UploadPhotoTask UploadPhotoTask有一个名为onPostExecute的方法,该方法有一个参数,即上传照片的Flickr照片ID作为Flickr API的响应

代码语言:javascript
复制
protected void onPostExecute(String response) {
   Log.i("photoID",response);
}

这是FlickrjActivity的load()方法:

代码语言:javascript
复制
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);finish();将此ID返回给主活动

但就在我按下保存按钮之后,由于Log.i("ordering","beforeResultCode");在上传运行前将消息打印到Logcat,因此if(resultCode == RESULT_OK)中的块从未被调用,因为在上传完成后不会再次调用onActivityResult()。那么为什么在FlickrjActivityfinish()之前调用onActivityResult()呢?

EN

回答 1

Stack Overflow用户

发布于 2014-09-26 01:39:27

我确实找到了答案,只需要将android:launchMode从"singleTask“改为"singleTop",尽管我不知道为什么。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26042843

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档