在Kotlin中,如何在片段中创建一个按钮来打开一个活动及其对应的kt文件?
我已经尝试过这里类似问题的所有内容。
有两种简单的方法:
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 fun startNextActivity() {
startActivity(Intent(this, SecondActivity::class.java)
}
如您所见,老式的界面方式实现需要大量无用的代码行。使用requireActivity()
方法是最简单,最快的。