您好我正在使用Android Studio和Kotlin语言制作应用,并且无法使用我的按钮打开新活动。我在我的xml文件中创建了按钮但我找不到如何在MainActivity.kt中声明它的KOTLIN语法以及如何创建将带我进入新活动的OnClicklistener。我在清单中定义了新活动,我想我只需要有关如何实际从MainActivity.kt切换到secondActivity.kt的语法帮助。任何帮助表示赞赏。
答案 0 :(得分:10)
您可以添加onclick
事件监听器,如下所示。
button1.setOnClickListener(object: View.OnClickListener {
override fun onClick(view: View): Unit {
// Handler code here.
val intent = Intent(context, DestActivity::class.java);
startActivity(intent);
}
})
或者您可以使用简化形式
button1.setOnClickListener {
// Handler code here.
val intent = Intent(context, DestActivity::class.java)
startActivity(intent);
}
答案 1 :(得分:4)
布局xml文件中的按钮
<Button
android:id="@+id/btn_start_new_activity"
android:text="New Activity"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
用于在Kotlin活动文件
中声明它var btn_new_activity = findViewById(R.id.btn_start_new_activity) as Button
将Onclicklistener设置为按钮,以便在单击按钮时开始新活动
btn_new_activity.setOnClickListener {
val intent = Intent(context, NewActivity::class.java)
startActivity(intent);
}
参考:Android Studio Tutorial - https://www.youtube.com/watch?v=7AcIGyugR7M
答案 2 :(得分:3)
我建议您使用Anko - 扩展名为Kotlin https://github.com/Kotlin/anko。 它允许您以最短的方式使用意图(以及更多其他内容)。在你的情况下,它将是:
button {
onClick { startActivity<SecondActivity>() }
}
答案 3 :(得分:2)
// In your method `fun onCreate(savedInstanceState: Bundle?)` add this.
your_btn_id.setOnClickListener{
val intent = Intent(this, yourpagename::class.java)
startActivity(intent)
}
// till now if it doesn't work then, check if these two files are added or not,
import android.content.Intent
import kotlinx.android.synthetic.main.activity_otp.*
//希望它能起作用。 ?
答案 4 :(得分:1)
您可以创建一个通用方法来启动任何活动
inline fun<reified T> launchActivity(){
val intent = Intent(this, T::class.java)
startActivity(intent)
}
并且可以像这样使用
button1.setOnClickListener {
launchActivity<AnyActivity>()
}
要获取有关具体化 Go to Here
的更多详细信息答案 5 :(得分:0)
您可以简单地在主要活动中声明您的按钮,如下所示:
val button = findViewById<Button>(R.id.button)
button.setOnClickListener(this);
并在点击监听器中启动新活动:
override fun onClick(p0: View?) {
val intent = Intent(this, activity::class.java)
startActivity(intent)
}