【发布时间】:2021-05-15 12:08:09
【问题描述】:
我需要在activity中调用一个fragment方法......
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个案例都没有成功
-
我试过了:(它使应用程序崩溃)
FirstFragment().getToast(this@MainActivity) -
也试过了,但是函数
.getToast()出现红色val myToast = supportFragmentManager.findFragmentByTag(FistFragmentTAG_NAME).getToast(this@MainActivity) -
也试过了,但函数
.getToast()也显示为红色supportFragmentManager.fragments.forEach { it: Fragment val getToast = it.getToast(this@MainActivity)
这里的问题不是context,因为实际上,我试图调用一个根本不使用上下文的方法...在这个例子中设置上下文只是为了调用Toast。
如何调用片段方法??*
【问题讨论】:
-
你能告诉我你到底面临什么问题吗?只需在片段上创建 1 个方法,并使用片段实例调用该方法从活动中。
-
您能举个例子吗?我不知道如何在活动中实例化该方法...否则我也会尝试
-
你能更新你的实际活动和片段代码吗?我将对其进行更新,以便您轻松理解。
-
好的。您期望什么类型的更新?我发布了 3 种不同的解决方案,但均未成功。
-
表示您如何从活动中添加片段。我猜你会使用片段管理器来添加或替换片段。
标签: android kotlin methods fragment