【发布时间】:2020-10-30 23:06:48
【问题描述】:
val dialog = AlertDialog.Builder(activity as Context)
dialog.setTitle("Confirmation")
dialog.setMessage("Are you sure you want to log out?")
dialog.setPositiveButton("YES"){ text, listener ->
sharedPreferences.edit().clear().apply()
println("Shared preferences cleared")
println("Logged out")
val intent = Intent(activity as Context, LoginActivity::class.java)
startActivity(intent)
}
dialog.setNegativeButton("NO"){text,listener ->
val homeFragment = HomeFragment()
val beginTransaction = activity!!.supportFragmentManager.beginTransaction()
beginTransaction.replace(R.id.frameLayout, homeFragment)
beginTransaction.commit()
activity!!.navigationView.setCheckedItem(R.id.home_screen)
println("Home title set")
activity!!.actionBar!!.title = "Home"
}
dialog.create()
dialog.show()
当用户单击“否”按钮时,我想转到主页片段。我被定向到 Home Fragment,但对话框并没有消失,当我再次单击“否”时,应用程序崩溃,并在行上出现空指针异常:
val beginTransaction = activity!!.supportFragmentManager.beginTransaction()
当我到达主页片段时如何删除对话框? 请帮忙。
【问题讨论】:
-
首先要告诉大家的是,
activity!!.supportFragmentManagerActivity 的强制解包是非常危险的。小心这些力展开。 -
是的,但是如果我不使用编译器会报错!!运算符
-
那是因为你应该这样使用它,可能;
val beginTransaction = activity?.supportFragmentManager?.beginTransaction() beginTransaction?.let{ it.replace(R.id.frameLayout, homeFragment) it.commit() }
标签: android kotlin android-fragments nullpointerexception