Android-片段MyFragment未附加到活动
我看到了一个我无法复制自己的崩溃。此崩溃发生在应用程序的启动屏幕中require()返回null 我正在使用导航组件main活动是启动的第一个活动,它的startDestination是飞溅碎片 主活动几乎为空,因为导航组件处理第一个片段事务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
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)