在Android中,如何从退出活动和碎片的函数中调用DialogFragment?

问题描述 投票:0回答:1

我有一个 DialogFragment 什么名字 对话. 如何在Android系统中从一个已经失效的函数和碎片中调用它?

这就是 DialogFragment:

class Dialog: DialogFragment() {

    private var array = arrayOf("Yes", "No")
    var a = ""
    override fun onCreateView(
        inflater: LayoutInflater,
        container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View? {
        val rootView = inflater.inflate(R.layout.activity_main, container)
        val myListView = rootView.findViewById(R.id.listview_1) as ListView
        myListView.adapter = ArrayAdapter(context!!, R.layout.list_item, array)
        myListView.setItemChecked(0,true)
        val okbutton = rootView.findViewById<Button>(R.id.ok)
        var cancelbutton = rootView.findViewById<Button>(R.id.cancel)
        var title = rootView.findViewById<TextView>(R.id.title)
        title.text="Choose one option"
        cancelbutton.setOnClickListener { dismiss() }
        okbutton.setOnClickListener {
            Toast.makeText(context, "OK", Toast.LENGTH_LONG).show()
        }
        myListView.setOnItemClickListener { adapterView,
                                            view,
                                            position,
                                            l
            ->
            Toast.makeText(context, "${array[position]}", Toast.LENGTH_LONG).show()
        }
        return rootView
    }
}

这是我想调用的函数。对话 从那里。

private val fm = supportFragmentManager

fun TestFunction() {
    Dialog().show(fm, "")
}

但是 supportFragmentManager 是红色的,在函数中不被识别。

android function android-studio dialogfragment
1个回答
0
投票

supportFragmentManager 是变量 Activityfragment 类,所以你不能不在Activity类或片段中使用。

  • 如果你想测试它,就用Espresso来测试用户界面。
  • 如果你在业务层中使用它,将违反干净的代码,所以请使接口包含在Activity中实现的show函数或在业务类中的片段,当逻辑完成时调用。
  • 如果你坚持要让它成为商业,所以请传递一个上下文,并把它投给你的活动类。
© www.soinside.com 2019 - 2024. All rights reserved.