在Kotlin中,如何在打开活动的片段中创建按钮?

时间:2019-11-21 07:28:06

标签: android kotlin

在Kotlin中,如何在打开活动及其对应的kt文件的片段中创建按钮?

我在这里尝试了所有类似问题的解决方法。

1 个答案:

答案 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()方法是最简单,最快的。