我需要为我的应用程序做这样的功能:当用户按下“保存”按钮时,选择的图像将被上传到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的活动,它创建一个名为AsyncTask的UploadPhotoTask 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);和finish();将此ID返回给主活动
但就在我按下保存按钮之后,由于Log.i("ordering","beforeResultCode");在上传运行前将消息打印到Logcat,因此if(resultCode == RESULT_OK)中的块从未被调用,因为在上传完成后不会再次调用onActivityResult()。那么为什么在FlickrjActivity的finish()之前调用onActivityResult()呢?
发布于 2014-09-26 01:39:27
我确实找到了答案,只需要将android:launchMode从"singleTask“改为"singleTop",尽管我不知道为什么。
https://stackoverflow.com/questions/26042843
复制相似问题