美文网首页
Fragment中得不到OnActvityResult的返回值问

Fragment中得不到OnActvityResult的返回值问

作者: 黑白岩 | 来源:发表于2019-02-26 15:01 被阅读0次

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

      @Override
        protected void onActivityResult(int requestCode, int resultCode, Intent data) {
            super.onActivityResult(requestCode, resultCode, data);
            Fragment fragmentByTag = supportFragmentManager.findFragmentByTag(mineFragment.getTag());
            fragmentByTag.onActivityResult(requestCode, resultCode, data);
        }
    

    然后在你的Fragment 的OnActivityResult()方法中才能获取数据

    @Override
        public void onActivityResult(int requestCode, int resultCode, Intent data) {
            super.onActivityResult(requestCode, resultCode, data);   
               //这里执行你的代码     
    }
    

    注意 下面的方法中此Fragment 我们需要在初始化中创建出来 负责会有空指针异常 找不到Fragment.

     findFragmentByTag(mineFragment.getTag())
    

    我们在写ViewPager时 在初始化时习惯了这样写

    fragments = new ArrayList<>();
            fragments.add(0, new HomeFragment());
            fragments.add(1, new ShoppingCartFragment());
            fragments.add(2, new ShoppingCartFragment);
            fragments.add(3, new MineFragment());
    
            supportFragmentManager = getSupportFragmentManager();
            mainPagerAdapter = new MainPagerAdapter(supportFragmentManager, fragments);
    

    这样写 我们在OnActvityResult()方法中 是使用一下方法 是有问题的 因为MineFragment 并没有初始化 只是在一开会new 一个对象

    supportFragmentManager.findFragmentByTag(MineFragment.class.getSimpleName());
    

    正确的写法是:

         mineFragment = new MineFragment()
        fragments.add(3, mineFragment );
    

    相关文章

      网友评论

          本文标题:Fragment中得不到OnActvityResult的返回值问

          本文链接:https://www.haomeiwen.com/subject/cwmayqtx.html