当在Fragment中使用startActivityForResult()方法打开一个Activity,但是这个Fragment的onActivityResult方法不执行

注意Fragment使用startActivityForResult()方法打开一个Activity,并需要这个Activity销毁时通过onActivityResult()传递数据给打开他的Fragment.一般是没有问题的,但是如果这个Fragment依附的那个FragmentActivity也重写了onActivityResult()方法,那么这个Fragment的onActivityResult()方法就获取不到数据了(被那个依附的FragmentActivity接受了),这时候我们只需要在这个FragmentActivity的onActivityResult()中获取到这个Fragment的对象(通过tag),然后调用这个fragment中的onActivityResult()就可以将值传到这个fragment中了

Class Activity(继承FragmentActivity)

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {

//将值传入DemoFragment
this.getSupportFragmentManager().findFragmentByTag(DemoFragment.class.getSimpleName()).onActivityResult(requestCode, resultCode, data);
}
SearchFragment
@Override
	public void onActivityResult(int requestCode, int resultCode, Intent data) {
		super.onActivityResult(requestCode, resultCode, data);
           //这里执行你的代码
}

  

    

时间: 2024-08-02 15:10:35

当在Fragment中使用startActivityForResult()方法打开一个Activity,但是这个Fragment的onActivityResult方法不执行的相关文章

Virtualbox中不能为虚拟机打开一个新任务的原因及解决方法

我最开始的时候还以为是因为我的虚拟机路径是中文导致的,后来才发现原因: 4.3.12 之后的版本增加了安全检查机制(以前会被病毒利用),如果有程序将DLL注入Vbox的进程就会报错退出.一些杀软,MacType,或者别的系统性程序,都会注入DLL,找到元凶并排除即可. 解决方法:(有些方法我试了其实没有效果,我自己其实是重新打开就不会出错了,要等一会,不要打开virtualbox后就马上打开虚拟机,可能要等虚拟机初始化一下吧,下面的方法大家可以试试,不过不一定有效) 1.用老版本,4.3.12及

Android开发,在Fragment中,隐藏或关闭软键盘(虚拟键盘)的方法

网上可以搜到各种方法,实际测试中,我的开发用机中,仅仅下面这个方法有效,记录一下. //隐藏虚拟键盘      public static void HideKeyboard(View v)      {          InputMethodManager imm = ( InputMethodManager ) v.getContext( ).getSystemService( Context.INPUT_METHOD_SERVICE );             if ( imm.isA

如何防止PendingIntent打开一个Activity的多个实例

正在写一个app,这个app会定时刷新Notification,点击Notification时会开启主Activity,令人烦恼的是,会打开主Activity的多个实例. 研究了好久PendingIntent的使用方法,研究了如何判断Activity是否已经存在于内存中,后来发现只要一句话即可解决此问题: <activity android:launchMode="singleInstance" > 就是这么简单.:P 版权声明:本文为博主原创文章,未经博主允许不得转载.

Android的Fragment中onActivityResult不被调用的解决方案

常见的,我们会在FragmentActivity中嵌套一层Fragment使用,甚至两次或多层Fragment嵌套使用.这个时候,在第二级或者更深级别的Fragment调用startActivityForResult方法时,将无法收到onActivityResult回调.阅读FragementActivity源码后发现,原来是源码里没有处理嵌套Fragment的情况,也就是说回调只到第一级Fragment,就没有继续分发.我们可以实现一个自己的AppCompatActivity,来实现继续分发,

Android Toolbar使用及Fragment中的Toolbar处理

Toolbar作为ActionBar使用介绍 本文介绍了在Android中将Toolbar作为ActionBar使用的方法.并且介绍了在Fragment和嵌套Fragment中使用Toolbar作为ActionBar使用时需要注意的事项. 使用support library的Toolbar Android的ActionBar每个版本都会做一些改变, 所以原生的ActionBar在不同的系统上看起来可能会不一样.使用support library版本的Toolbar可以让你的应用在多种设备类型上保

Android Fragment使用(四) Toolbar使用及Fragment中的Toolbar处理

Toolbar作为ActionBar使用介绍 本文介绍了在Android中将Toolbar作为ActionBar使用的方法. 并且介绍了在Fragment和嵌套Fragment中使用Toolbar作为ActionBar使用时需要注意的事项. 使用support library的Toolbar Android的ActionBar每个版本都会做一些改变, 所以原生的ActionBar在不同的系统上看起来可能会不一样. 使用support library版本的Toolbar可以让你的应用在多种设备类型

关于fragment中使用onActivityResult

最近开发得工程中涉及到了fragment,用到的业务逻辑是这样的,就是在一个主activity包含fragment(该fragment称作父fragment),同时fragment中还包含viewpager,viewpager中继续使用fragment(该fragment称作子fragment),支持左右滑动.我现在在子fragment中使用startActivityForResult()方法去打开一个activity,当在新打开得activity中执行完操作返回之后需要执行onActivity

解决在Fragment中启动Activity时传递请求码的问题

解决在Fragment中启动Activity时传递请求码的问题: 首先需要指出的是Fragment有startActivityForResult方法,而Activity中也有startActivityForResult方法:两者的区别是: Fragment中的startActivityForResult方法: FragmentActivity中的startActivityForResult方法: 从官方的解释中可以看出Fragment中的startActivityForResult方法是调用的是

在fragment中实现返回键单击提醒 双击退出

最近在练习一个小项目,也就是郭霖大神的开源天气程序,尝试用mvp架构加dagger2来重写了一下,大致功能都实现了,还没有全部完成. 项目地址 接近完成的时候,想在天气信息页面实现一个很常见的功能,也就是点击屏幕下方的返回键的时候不是返回到上一个activity或者退出,而是提醒用户再按一次就会退出. 实现思路也很简单,就是对返回键的动作进行监听和拦截,然后重写成需要的动作,因为在我的程序中activity只作为调度器使用,真正的View功能在fragment中,所以返回键的动作捕捉只能以接口形