移动到另一个片段后,Snackbar 操作获取空指针
Snackbar action gets null pointer after moving to another fragment
片段 A 调用带有操作按钮的快餐栏。当用户单击操作时,它会启动新的 activity 并带有意图。
它工作正常。但是,如果用户在 snackbar 不断出现时移动到 Fragment B,然后按下操作按钮,现在它不会开始新的 activity 但会崩溃。
如何防止在这种情况下崩溃并使 Intent 可行?
这是我的代码。
片段 A
binding.theButton.setOnClickListener {
val proSnack = Snackbar.make(view!!, activity!!.getString(R.string.this_is_pro_function), Snackbar.LENGTH_LONG)
proSnack.setAction(R.string.check, View.OnClickListener {
activity!!.startActivity(Intent(activity, ProActivity::class.java))
})
proSnack.show()
}
}
binding.backText.setOnClickListener{
activity?.supportFragmentManager?.popBackStackImmediate()
}
activity!!.startActivity(Intent(activity, ProActivity::class.java))
问题就在这里。您可以检查activity。它是空的。使用 !! 是一种不好的做法。你可以改成
activity?.startActivity(Intent(activity, ProActivity::class.java))
但是 activity 为空。它不会打开一个新的 activity
片段 A 调用带有操作按钮的快餐栏。当用户单击操作时,它会启动新的 activity 并带有意图。 它工作正常。但是,如果用户在 snackbar 不断出现时移动到 Fragment B,然后按下操作按钮,现在它不会开始新的 activity 但会崩溃。
如何防止在这种情况下崩溃并使 Intent 可行? 这是我的代码。 片段 A
binding.theButton.setOnClickListener {
val proSnack = Snackbar.make(view!!, activity!!.getString(R.string.this_is_pro_function), Snackbar.LENGTH_LONG)
proSnack.setAction(R.string.check, View.OnClickListener {
activity!!.startActivity(Intent(activity, ProActivity::class.java))
})
proSnack.show()
}
}
binding.backText.setOnClickListener{
activity?.supportFragmentManager?.popBackStackImmediate()
}
activity!!.startActivity(Intent(activity, ProActivity::class.java))
问题就在这里。您可以检查activity。它是空的。使用 !! 是一种不好的做法。你可以改成
activity?.startActivity(Intent(activity, ProActivity::class.java))
但是 activity 为空。它不会打开一个新的 activity