大佬教程收集整理的这篇文章主要介绍了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 这样的方法,我检查了这个 answer 但它的解决方案对我不起作用,有什么帮助吗?
如果你愿意,你可以从 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)
}
}
,
在supportFragmentManager
中调用FragmentActivity
应该没有问题。我不确定 openDialog()
是否在活动中定义。由于它是公共功能,我假设它是在对话框片段中定义的,并且您是从活动中调用它的。如果是这种情况,您应该将 openDialog()
放在您的活动类中。
编辑:您的函数超出类范围。它应该在类中像这样:
import android.app.Activity
import androidx.appcompat.app.AppCompatActivity
import android.os.bundle
import android.view.View
import android.widget.EditText
import android.widget.Toast
import androidx.appcompat.app.AlertDialog
import androidx.fragment.app.Fragment
import androidx.fragment.app.FragmentActivity
import androidx.fragment.app.FragmentManager
import com.amin.firebasevskotlin.R
import com.amin.firebasevskotlin.utils.CreateDialogForProduct
import com.google.android.material.floaTingactionbutton.FloaTingActionButton
lateinit var fab: FloaTingActionButton
class MainActivity : FragmentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceStatE)
setContentView(R.layout.activity_main)
fab = findViewById(R.id.floaTingActionButton)
fab.setOnClickListener(onClickListener)
}
var onClickListener = View.onClickListener() {
when (it.getId()) {
R.id.floaTingActionButton -> openDialog()
}
}
fun openDialog() {
val dialog = CreateDialogForProduct()
dialog?.show(supportFragmentManager,null)
}}
,
使用getActivity().getSupportFragmentManager()
要么
如果您在 api 21 中工作,请将 getSupportFragmentManager()
替换为 getFragmentManager()
。
以上是大佬教程为你收集整理的supportFragmentManager 不适用于 kotlin全部内容,希望文章能够帮你解决supportFragmentManager 不适用于 kotlin所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。