android - 如何使用 Kotlin 从 Android 中的片段访问另一个片段?
问题描述
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()
到达主页片段时如何删除对话框?请帮忙。
解决方案
dialog.dismiss();
在提交事务之前调用
以及在移动到另一个活动之前
val builder = AlertDialog.Builder(activity as Context)
.setTitle("Confirmation")
.setMessage("Are you sure you want to log out?")
.setPositiveButton("YES"){ dialog, _ ->
sharedPreferences.edit().clear().apply()
println("Shared preferences cleared")
println("Logged out")
dialog.dismiss()
val intent = Intent(activity as Context, LoginActivity::class.java)
startActivity(intent)
}
.setNegativeButton("NO"){dialog,_ ->
val homeFragment = HomeFragment()
val beginTransaction = activity!!.supportFragmentManager.beginTransaction()
beginTransaction.replace(R.id.frameLayout, homeFragment)
dialog.dismiss()
beginTransaction.commit()
activity!!.navigationView.setCheckedItem(R.id.home_screen)
println("Home title set")
activity!!.actionBar!!.title = "Home"
}
.show()
推荐阅读
- php - 如何清除 Symfony 5 中的分析器缓存?
- javascript - javascript没有线性运行需要等待forEach循环中的另一个函数,但它只是跳过了
- angular - 'boolean | 类型的参数 undefined' 不能分配给'boolean' 类型的参数
- javascript - 无法从@mui/icons-material 导入图标
- css - CSS 动画不适用于 ::before 和 ::after
- graphql - GraphQL Mutation 在 Playground 中有效,但在客户端代码中无效
- go - 忽略 cmd.Run 中的信号
- sql - 清理 Teradata 临时表中的错误删除/插入
- python - 针对 pandas 数据框运行 python 函数并将值返回到数据框中的问题
- python - 获取列表中的字符串等于列表中的数据框