android - supportFragmentManager 不适用于 kotlin
问题描述
我正在尝试使用 Kotlin 使用 AlertDialog 类创建一个自定义对话框,这里首先介绍了对话框类
class CreateDialogForProduct : AppCompatDialogFragment() {
lateinit var nameET: EditText
lateinit var barcodeET: EditText
lateinit var detailsET: EditText
lateinit var saveBtn: Button
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
var builder = AlertDialog.Builder(activity)
val inflater = layoutInflater
var view = inflater.inflate(R.layout.layout_dailog,null)
builder.setView(view)
builder.setTitle("Save Product")
builder.setCancelable(true)
nameET = view.findViewById(R.id.name_tv)
barcodeET = view.findViewById(R.id.barcode_tv)
detailsET = view.findViewById(R.id.details_tv)
saveBtn = view.findViewById(R.id.save_btn)
return builder.create()
}
}
这就是我在遇到问题的活动中如何称呼它
fun openDialog(){
val dialog = CreateDialogForProduct()
dialog?.show(supportFragmentManager, null)
}
它给了我一个错误,没有像supportFragmentManger这样的方法,我检查了这个答案,但它的解决方案对我不起作用,有帮助吗?
解决方案
如果需要,您可以从 AppCompatActivity 扩展您的活动,这不是您的问题,但声明这样的方法,它将为您工作
fun openDialog(){
val dialog = CreateDialogForProduct()
dialog.show((activity as FragmentActivity).supportFragmentManager, null)
}
完整的活动课将是这样的
lateinit var fab: FloatingActionButton
lateinit var activity:Activity
var onClickListener = View.OnClickListener() {
when (it.getId()) {
R.id.floatingActionButton -> openDialog()
}
}
fun openDialog(){
val dialog = CreateDialogForProduct()
dialog.show((activity as FragmentActivity).supportFragmentManager, null)
}
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
activity = this
fab = findViewById(R.id.floatingActionButton)
fab.setOnClickListener(onClickListener)
}
}
推荐阅读
- powershell - 使用 powershell 通过 powershell 创建和设置安全性
- android - OSM 地图在 android 上看起来乱七八糟
- exchange-server - 用于 Dynamics 365 for Customer Engagement Onpremise 与 Exchange Online 的 S2S 身份验证的证书已过期
- php - Symfony 4 - 功能测试 - 尽管 followRedirects 为真,但客户端不遵循重定向
- c# - 使用 .NET 生成 HTML 电子邮件
- java - 为什么不是我的所有按钮都在 android studio 中收到点击输入?
- python - python中是否有等效于get()的方法?
- python - 使用python从HTML页面获取数据
- php - 在编译机上构建 php,并在 alpine 中运行失败
- angular - 将 Tesseract 库导入 Angular 7 失败