首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >片段onAttach(上下文:上下文)不被调用

片段onAttach(上下文:上下文)不被调用
EN

Stack Overflow用户
提问于 2020-05-19 13:53:32
回答 1查看 226关注 0票数 0

我看到许多人使用fragmentManager进行活动片段调用。所以我也试过了。当我首先单击工具栏时,会得到这样的错误。

代码语言:javascript
复制
kotlin.UninitializedPropertyAccessException: lateinit property mActivity has not been initialized

尽管我重写并初始化了该方法,但在启动onAttach时看不到日志。为什么我不能初始化活动?Myfragment为DaggerFragment。

主按钮点击

代码语言:javascript
复制
       binding.toolbar.setOnClickListener {
            currentFramgnet = MainPictureFragment().instance
            changeFragment(this@MainActivity, binding.fragmentContainer, currentFramgnet!!)
            (currentFramgnet as MainPictureFragment).changeDataset("button OnClick")
        }

主changeFragment

代码语言:javascript
复制
    fun changeFragment(activity: AppCompatActivity, view: View, fragment: Fragment) {
        val fragmentManager = activity.supportFragmentManager
        fragmentManager
            .beginTransaction()
            .replace(view.id, fragment)
            .commit()
    }

片段changeDataset

代码语言:javascript
复制
    fun changeDataset(mes : String){
        showLog("changeDataset : "+mes)
        showToast(mActivity,"11111")
    }

片段onAttach

代码语言:javascript
复制
private lateinit var mActivity :Activity
    override fun onAttach(context: Context) {
        super.onAttach(context)
        showLog("onAttach")
        if (context is Activity) mActivity = context
    }

更新:我对此进行了记录,发现changeDataset是在onAttach()之前调用的

代码语言:javascript
复制
D/TAG: changeDataset : button OnClick
D/TAG: onAttach
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-05-19 14:19:07

您的问题是在执行片段事务之前尝试访问上下文,因为您使用了commit()。修复它的简单方法是使用commitNow()

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61892782

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档