在 Activity 中调用片段方法不工作 kotlin

calling fragment method in Activity not working kotlin

我需要在activity中调用片段方法...

FirstFragment.kt

class FirstFragment: Fragment() {

  fun getToast(context: Context) {
    return Toast.makeText(context, "hello", Toast.LENGTH_SHORT).show()
}

 }

MainActivity.kt

  class MainActivity: AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)



    val transaction = supportFragmentManager.beginTransaction()
    transaction.replace(R.id.fragment_container, FirstFragment, FistFragmentTAG_NAME)
    transaction.commit()

     //expecting to use fragment method...
     parameter.getToast() //parameter is the code neede to call FirstFragment method .getToast()
    }


  }

我试过这3种情况都没有成功

  1. 我试过:(它使应用程序崩溃)

      FirstFragment().getToast(this@MainActivity)
    
  2. 也试过了,但是函数.getToast()出现红色

    val myToast = supportFragmentManager.findFragmentByTag(FistFragmentTAG_NAME).getToast(this@MainActivity)
    
  3. 也试过了,但是函数.getToast()也显示为红色

       supportFragmentManager.fragments.forEach { it: Fragment
    
                     val getToast = it.getToast(this@MainActivity)
    

这里的问题不是 context,因为实际上,我正在尝试调用一个根本不使用上下文的方法...在此示例中设置上下文只是为了调用 Toast.

如何调用片段方法?*

这是activityclass

class MyActivity : AppCompatActivity() {
    
        private lateinit var myFragment: FirstFragment
        override fun onCreate(savedInstanceState: Bundle?) {
            super.onCreate(savedInstanceState)
            setContentView(R.layout.activity_main)
    
            myFragment = FirstFragment()
            supportFragmentManager
                    .beginTransaction()
                    .add(R.id.fragment_container, myFragment , "MyFragment")
                    .commit()
    
            //this is fragment method, we call it from activity
            myFragment.getToast(this)
        }
    
    }

这是片段class

class FirstFragment: Fragment() {

    override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
        return super.onCreateView(inflater, container, savedInstanceState)
    }

    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        super.onViewCreated(view, savedInstanceState)
    }

    fun getToast(context: Context) {
       Toast.makeText(context, "Hello", Toast.LENGTH_SHORT).show()
    }
}