setResult() 这个方法需要在 finish() 方法 调用前 ,才可以 set 成功
activity返回result是在被finish的时候,也就是说调用setResult()方法必须在finish()之前。
那么如果在如下方法中调用setResult()也有可能不会返回成功: onPause(), onStop(), onDestroy(),
因为这些方法调用不一定是在finish之前的,当然在onCreate()就调用setResult肯定是在finish之前的
按BACK键从一个Activity退出来的,一按BACK,android就会自动调用Activity的finish()方法,然后设置resultCode为RESULT_CANCELED,也就不会返回任何数据了 .
解决方法就是在Activity里面捕获按BACK的事件,捕获到之后先setResult,然后自己来调用finish,就搞定了……把BACK事件直接自己给吞了
如果 测试 可以把setResult()方法 可以放在一个点击事件中 我是放在了onDestroy()方法里面 ,可以调用 到 StartActivityForResult()方法 ,但是获取到的ResultCode = 0
把setResutl()方法放到 一个返回按钮的点击事件中,一切正常了;
更多 基础跳转 参考资料 http://www.cnblogs.com/lijunamneg/archive/2013/02/05/2892616.html
在iOS项目中用到解压缩,用的是ZipArchive,下载点击这里,ZipArchive是基于minizip的,但不支持多线程,封装的也不方便,然后就有了FastZipArchive,现在有一个粗糙的版本,下载点击:
一 FastZipArchive的简介如下:
1 基于ZipArchive和minizip的解压框架
二 使用说明
FastZipArchive使用很简便:
1将FastZipArchive下的文件引入你的工程
2创建一个FZipRequest的请求
NSString *sourcePath = [[[NSBundle mainBundle]resourcePath]stringByAppendingPathComponent:@"1.zip"]; NSString *desPath = @"1"; FZipRequest *re1 =[[FZipRequest alloc]init]; re1.zipFilePath = sourcePath; re1.unZipFilePath = desPath; re1.type = ZIP_TO_UNZIP; re1.mode = FAST_MODE; re1.delegate = self;
3将FZipRequest放入初始化好的FZipArchiveManager
_zipArchiveManager = [FZipArchiveManager defaultManager]; [_zipArchiveManager addTask:request];