getArguments()返回null

时间:2018-10-19 09:56:33

标签: android android-fragments kotlin

我试图将数据从活动传递到片段,但是无论我在哪里使用getArguments,它始终为空。

这是我的片段newInstance:

companion object {
    private var IS_FROM_SETTINGS : String = "IS_FROM_SETTINGS"
    fun newInstance(isFromSettings : Boolean):OnBoardingLocalitzacioFragment{
        val args = Bundle()
        args.putBoolean(IS_FROM_SETTINGS, isFromSettings)
        val fragment = OnBoardingLocalitzacioFragment()
        fragment.arguments = args
        return fragment
    }
}

在活动中,我创建片段来做:

 onBoardingFragments = mutableListOf(
            OnBoardingLocalitzacioFragment.newInstance(isFromSettings)::class,
            OnBoardingPresentacioFragment::class,
            OnBoardingNotificacionsFragment::class
    )

    adapter = OnBoardingPagerAdapter(supportFragmentManager, onBoardingFragments)

然后,回到片段中:

arguments?.getBoolean(IS_FROM_SETTINGS)!!

我尝试在不同的方法中使用get参数,但还是没有运气。

谢谢:)

2 个答案:

答案 0 :(得分:1)

您只是将类传递到列表中,我猜想newInstance不会被调用,并且您的所有片段都将在OnBoardingPagerAdapter中以不同的方式实例化,而无需接受任何参数。

答案 1 :(得分:1)

在下面的方法中:

onBoardingFragments = mutableListOf(
            OnBoardingLocalitzacioFragment.newInstance(isFromSettings)::class,
            OnBoardingPresentacioFragment::class,
            OnBoardingNotificacionsFragment::class
    )

您传递的是您尝试创建的class而不是instance的片段,newInstance很有趣。我认为您是根据类在适配器中创建片段的新实例。因此您的参数为空。

这是示例代码:

 onBoardingFragments = mutableListOf(
            OnBoardingLocalitzacioFragment.newInstance(isFromSettings),
            OnBoardingPresentacioFragment(),
            OnBoardingNotificacionsFragment()
    )