针对php–codeigniter,result()与result_array()和php$result这两个问题,本篇文章进行了详细的解答,同时本文还将给你拓展AndroidDriveAPIstar
针对php – codeigniter,result()与result_array()和php $result这两个问题,本篇文章进行了详细的解答,同时本文还将给你拓展Android Drive API startResolutionForResult返回RESULT_CANCELLED、Android startActivityForResult,setResult,onActivityResult未调用、Android startActivityForResult和setResult的区别、android – Camera Result总是返回RESULT_CANCELED等相关知识,希望可以帮助到你。
本文目录一览:- php – codeigniter,result()与result_array()(php $result)
- Android Drive API startResolutionForResult返回RESULT_CANCELLED
- Android startActivityForResult,setResult,onActivityResult未调用
- Android startActivityForResult和setResult的区别
- android – Camera Result总是返回RESULT_CANCELED
php – codeigniter,result()与result_array()(php $result)
通常我喜欢把我的结果作为数组,这就是为什么我主要使用result_array()
但我想知道我应该遵循哪种更好的方法,
哪一个在性能方面更有效?
这是我在codeigniter查询中讨论的示例
$query = $this->db->get(); $result = $query->result_array();
或者这应该是更好的方法?
$query = $this->db->get(); $result = $query->result();
现在我也在我的通用模型中使用result_array.
解决方法
CodeIgniter的代码:
/** * Query result. Acts as a wrapper function for the following functions. * * @param string $type 'object','array' or a custom class name * @return array */ public function result($type = 'object') { if ($type === 'array') { return $this->result_array(); } elseif ($type === 'object') { return $this->result_object(); } else { return $this->custom_result_object($type); } }
数组在技术上更快,但它们不是对象.这取决于您希望在何处使用结果.大多数情况下,阵列就足够了.
Android Drive API startResolutionForResult返回RESULT_CANCELLED
>我在开发人员控制台中为〜/ .android / debug.keystore配置了项目和凭据(值似乎是正确的)
>我有来自Drive for Android Documentation的复制粘贴代码 – >在方法onConnectionFailed()我调用connectionResult.startResolutionForResult()如果connectionResult.hasResolution()
>在onActivityResult中匹配requestCode即使我选择了我的帐户,我也收到了resultCode == 0(RESULT_CANCELLED)
你知道为什么吗?我还尝试添加:
<Meta-data android:name="com.google.android.apps.drive.APP_ID" android:value="----"/>
在文档页面上没有提到但在某些SO帖子上没有提到的Manifest.
感谢帮助
编辑:
我也试过使用enableAutoManage
mGoogleapiclient = new Googleapiclient.Builder(this) .enableAutoManage(this,this) .addApi(Drive.API) .addScope(Drive.ScopE_FILE) .build();
而不是manualy配置连接和connectionFailed回调:
.addConnectionCallbacks(this) .addOnConnectionFailedListener(this)
它在onConnectionFailed方法中返回错误代码13.根据documentation看来,这在以下时间返回:
OnConnectionFailedListener passed to
enableAutoManage(FragmentActivity,
Googleapiclient.OnConnectionFailedListener) when the user choses not
to complete a provided resolution. For example by canceling a dialog.
但我没有取消它.
我在Nexus 5x上测试它 – Android N.
解决方法
我只需要创建OAuth客户端ID而不是API密钥
>转到Developer Console > Credentials
>点击“创建凭据”> OAuth客户端ID> Android的
>填写详细信息
>创建
>打开OAuth许可屏幕(在凭据页面上)
>填写电子邮件和产品名称
>保存
现在它有效!
Android startActivityForResult,setResult,onActivityResult未调用
我打了一个电话,要求提供结果:
Intent intentcall = new Intent();
intentcall.setAction(Intent.ACTION_CALL);
intentcall.setData(Uri.parse("tel:" + phoneNumber));
this.startActivityForResult(intentcall, REQUEST_SLIPDROP_ICON_OFF);
然后像这样在电话监听器中设置结果:
private class MyPhonestateListener extends PhonestateListener{
public void onCallStateChanged(int state, String incomingNumber) {
super.onCallStateChanged(state, incomingNumber);
switch (state) {
case TelephonyManager.CALL_STATE_IDLE:
setResult(Activity.RESULT_OK);
break;
最后,我想关闭onActivityResult中的图标,但是什么也没有发生.
switch (requestCode) {
case REQUEST_SLIPDROP_ICON_OFF:
Log.d("request icon off", "request icon off");
if (resultCode == Activity.RESULT_OK) {
changeMenuItem(R.id.fall, R.drawable.fall);
slipAndDropIconOn = false;
}
break;
哪里不对了?请指教!谢谢
解决方法:
我认为此操作不会返回结果,因此调用startActivityForResult与调用startActivity没什么不同
注意:输出=无.
http://developer.android.com/reference/android/content/Intent.html#ACTION_CALL
Android startActivityForResult和setResult的区别
Android startActivityForResult和setResult的区别
startActivityForResult与startActivity的不同之处在于:
1、startActivity( )
仅仅是跳转到目标页面,若是想跳回当前页面,则必须再使用一次startActivity( )。
2、startActivityForResult( )
可以一次性完成这项任务,当程序执行到这段代码的时候,假若从T1Activity跳转到下一个Text2Activity,而当这个Text2Activity调用了finish()方法以后,程序会自动跳转回T1Activity,并调用前一个T1Activity中的onActivityResult( )方法。
相关函数:
startActivityForResult(Intent intent,Int requestCode) setResut(int resultCode,Intent intent) onActivityResult(int requestCode,int resultCode,Intent intent)
简单例子介绍:
1.跳转的时候不是采用startActivity(intent) 这个方法,而是startActivityForResult(intent,0)
Intent intent=new Intent(); intent.setClass(A.this,B.class); Bundle bundle=new Bundle(); String str1="aaaaaa"; bundle.putString("str1",str1); intent.putExtras(bundle); startActivityForResult(intent,0);//这里采用startActivityForResult来做跳转,此处的0为一个依据,可以写其他的值,但一定要>=0
2.重写onActivityResult方法,用来接收B回传的数据。
protected void onActivityResult(int requestCode,Intent data) { switch (resultCode) { //resultCode为回传的标记,我在B中回传的是RESULT_OK case RESULT_OK: Bundle b=data.getExtras(); //data为B中回传的Intent String str=b.getString("str1");//str即为回传的值 break; default: break; } }
3.在B中回传数据时采用setResult方法,并且之后要调用finish方法。
setResult(RESULT_OK,intent); //intent为A传来的带有Bundle的intent,当然也可以自己定义新的Bundle finish();//此处一定要调用finish()方法
Android activity的setResult()在什么时候调用(重点也是难点)
如果在startActivityForResult起来的Activity里面设置setResult,结果并不会马上返回给parent的Activity,只有当前Activity被finish,结果才会被发送给parent的onActivityResult去处理!
如果一个activity要返回数据到启动它的那个activity,可以调用setResult()方法。那什么时候去调用setResult()方法返回数据呢?
看一下源码就明白了:
public final void setResult(int resultCode,Intent data) { synchronized (this) { mResultCode = resultCode; mResultData = data; } } public void finish() { if (mParent == null) { int resultCode; Intent resultData; synchronized (this) { resultCode = mResultCode; resultData = mResultData; } if (Config.LOGV) Log.v(TAG,"Finishing self: token=" + mToken); try { if (ActivityManagerNative.getDefault() .finishActivity(mToken,resultCode,resultData)) { mFinished = true; } } catch (remoteexception e) { // Empty } } else { mParent.finishFromChild(this); } }
这段代码可以看出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事件直接自己给吞了
@Override public void onBackpressed() { Log.i(TAG,"onBackpressed"); setResult(Const.LIVE_OK); super.onBackpressed(); }
当然还可以在onCreate()就调用setResult,不过我觉得这种方法没有重写onBackpressed()方法好.
以上就是Android startActivityForResult和setResult的区别,如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
android – Camera Result总是返回RESULT_CANCELED
private void takePicture() { Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); if (intent.resolveActivity(this.getActivity().getPackageManager()) != null) { try { this.imageFile = File.createTempFile("CROP_SHOT",".jpg",this.getActivity().getCacheDir()); intent.putExtra(MediaStore.EXTRA_OUTPUT,Uri.fromFile(this.imageFile)); intent.putExtra(MediaStore.EXTRA_VIDEO_QUALITY,1); this.startActivityForResult(intent,Globals.REQUEST_TAKE_PHOTO); } catch (IOException e) { e.printstacktrace(); } } }
不幸的是,我的onActivityResult中的结果代码为RESULT_CANCELED
@Override public void onActivityResult(int requestCode,int resultCode,Intent data) { Log.v("PictureEdit","onActivityResult"); super.onActivityResult(requestCode,resultCode,data); if(resultCode == Activity.RESULT_OK) { if(requestCode == Globals.REQUEST_TAKE_PHOTO) { Log.v("PictureEdit","onActivityResult take photo"); this.startCropImage(Uri.fromFile(this.imageFile)); } else if (requestCode == Globals.REQUEST_PICK_PHOTO) { Log.v("PictureEdit","onActivityResult pick photo"); this.startCropImage(data.getData()); } else if (requestCode == Globals.REQUEST_CROP_PHOTO) { Log.v("PictureEdit","onActivityResult crop photo"); this.imageEncoded = data.getStringExtra(Globals.KEY_IMAGE_ENCODED); this.imageView.setimageBitmap(Images.decodeImage(imageEncoded)); this.buttonSave.setEnabled(true); } else { Log.v("PictureEdit","onActivityResult requestCode: " + requestCode + ",result: " + resultCode); } } else { Log.v("PictureEdit","onActivityResult resultCode is not ok: " + resultCode); } }
我到目前为止在stackoverflow和网络上找到的每个解决方案都没有解决我的问题.我使用缓存目录来创建临时文件:
File.createTempFile("CROP_SHOT",this.getActivity().getCacheDir());
我有正确的权限:
<uses-permission android:name="android.permission.CAMERA" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.READ_PHONE_STATE" /> <uses-permission android:name="android.permission.INTERNET" />
从我的智能手机中挑选图像总能正常工作:
private void pickPicture() { Intent intent = new Intent(Intent.ACTION_PICK,android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI); this.startActivityForResult(intent,Globals.REQUEST_PICK_PHOTO); }
那么为什么相机总是返回RESULT_CANCELED?
它出现在Android 6.0的Nexus 4和Android 4.2的三星galaxy S III上.
解决方法
I use the cache directory for creating a temp file:
首先,第三方相机应用程序无权在internal storage上使用应用程序的专用缓存目录.
其次,您不应该创建该文件.相机应用程序应该创建该文件.某些相机应用可能会混淆并拒绝覆盖您的文件.
因此,创建指向external storage上某个位置的File对象(例如,getExternalCacheDir()),但不要创建该文件.使用该File对象作为EXTRA_OUTPUT值的基础.
另请注意,MediaStore.EXTRA_VIDEO_QUALITY用于录制视频;它对ACTION_IMAGE_CAPTURE毫无意义.
今天关于php – codeigniter,result()与result_array()和php $result的介绍到此结束,谢谢您的阅读,有关Android Drive API startResolutionForResult返回RESULT_CANCELLED、Android startActivityForResult,setResult,onActivityResult未调用、Android startActivityForResult和setResult的区别、android – Camera Result总是返回RESULT_CANCELED等更多相关知识的信息可以在本站进行查询。
本文标签: