在Kotlin中,如何在打开活动及其对应的kt文件的片段中创建按钮?
我在这里尝试了所有类似问题的解决方法。
答案 0 :(得分:0)
有两种简单的方法:
1)在片段本身内:
button.setOnClickListener {
requireActivity().startActivity(
Intent(requireActivity(), SecondActivity::class.java)
)
}
在requireActivity()
中,您基本上是在告诉片段将父活动用作活动/上下文,然后从那里开始Intent。
2)使用回调活动。 定义下一个接口:
interface FragmentCallback {
fun startNextActivity()
}
将片段中的接口实例化为可为空的对象:
private var fragmentCallback: FragmentCallback? = null
确保在onAttatch()重写方法中向片段介绍接口:
override fun onAttach(context: Context) {
super.onAttach(context)
try {
if (context is FragmentCallback)
fragmentCallback = context
} catch (e: Exception) {}
}
实现您的按钮功能:
button.setOnClickListener {
fragmentCallback.startNextActivity()
}
然后在您的主要活动中实现接口:
class MainActivity : AppCompatActivity(), FragmentCallback
您的活动将需要界面的override方法。实现方法:
override fun startNextActivity() {
startActivity(Intent(this, SecondActivity::class.java)
}
如您所见,旧的接口方式实现需要大量无用的代码行。使用requireActivity()
方法是最简单,最快的。