Android-片段MyFragment未附加到活动

Android-片段MyFragment未附加到活动,android,android-activity,crash,fragment,Android,Android Activity,Crash,Fragment,我看到了一个我无法复制自己的崩溃。此崩溃发生在应用程序的启动屏幕中require()返回null 我正在使用导航组件main活动是启动的第一个活动,它的startDestination是飞溅碎片 主活动几乎为空,因为导航组件处理第一个片段事务 class MainActivity : Activity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstance

我看到了一个我无法复制自己的崩溃。此崩溃发生在应用程序的启动屏幕中require()返回null

我正在使用导航组件main活动是启动的第一个活动,它的startDestination是飞溅碎片

主活动几乎为空,因为导航组件处理第一个片段事务

class MainActivity : Activity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
    }
}
这是我的片段:

class SplashFragment : Fragment() {

    private val isFirstLaunch get() = PreferenceHelper.getObject<Boolean>(PREF_FIRST_LAUNCH) ?: true
    private lateinit var binding: FragmentSplashBinding

    override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
        binding =  FragmentSplashBinding.inflate(inflater, container, false)
        return binding.root
    }

    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        super.onViewCreated(view, savedInstanceState)

        // Show loading animation
    }

    override fun onResume() {
        super.onResume()

        Log.d("TAG", "isFirstLaunch: $isFirstLaunch")

        Handler().postDelayed({

            Log.d("TAG", "postDelayed finished")

            if (isFirstLaunch){
                navigateToA()
            } else {
                navigateToB()
            }
        }, DELAY_COUNT)
    }


    private fun navigateToA(){
        startActivity(Intent(requireActivity(), ActivityA::class.java))
        requireActivity().overridePendingTransition(0, 0)
        requireActivity().finish()
    }

    private fun navigateToB(){
        startActivity(Intent(requireActivity(), ActivityB::class.java))
        requireActivity().overridePendingTransition(0, 0)
        requireActivity().finish()
    }

    companion object {
        const val PREF_FIRST_LAUNCH = "PREF_FIRST_LAUNCH"
        const val DELAY_COUNT = 4000L
    }
}
我是否遗漏了一些明显的会导致这种情况发生的东西? 提前谢谢

[编辑]

Fatal Exception: java.lang.IllegalStateException: Fragment SplashFragment not attached to an activity.
   at androidx.fragment.app.Fragment.requireActivity(Fragment.java:833)
   at com.package.SplashFragment.navigateToA(SplashFragment.java:80)
   at com.package.SplashFragment.access$navigateToB(SplashFragment.java:25)
   at com.package.SplashFragment$onResume$1.run(SplashFragment.java:54)
   at android.os.Handler.handleCallback(Handler.java:883)
   at android.os.Handler.dispatchMessage(Handler.java:100)
   at android.os.Looper.loop(Looper.java:214)
   at android.app.ActivityThread.main(ActivityThread.java:7356)
   at java.lang.reflect.Method.invoke(Method.java)
   at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930)

你能粘贴错误stacktrace吗?@MariuszBrona我添加了stacktrace,但我想我发现了问题!屏幕旋转未被禁用!我想那就是造成这次车祸的原因。我将测试它,并在几天后发布一个答案,当我确认这是问题时。结果表明,这不是问题,仍然会出现崩溃,旋转屏幕确实输出了非常相似的日志,但返回到试图找到问题
Fatal Exception: java.lang.IllegalStateException: Fragment SplashFragment not attached to an activity.
   at androidx.fragment.app.Fragment.requireActivity(Fragment.java:833)
   at com.package.SplashFragment.navigateToA(SplashFragment.java:80)
   at com.package.SplashFragment.access$navigateToB(SplashFragment.java:25)
   at com.package.SplashFragment$onResume$1.run(SplashFragment.java:54)
   at android.os.Handler.handleCallback(Handler.java:883)
   at android.os.Handler.dispatchMessage(Handler.java:100)
   at android.os.Looper.loop(Looper.java:214)
   at android.app.ActivityThread.main(ActivityThread.java:7356)
   at java.lang.reflect.Method.invoke(Method.java)
   at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930)