[英]TexView onClickListener not working from Kotlin based activity
I recently switched to kotlin, and created an activity and added few views in it, but the click listener on my TextView
is not working.我最近切换到 kotlin,并创建了一个活动并在其中添加了一些视图,但是我的
TextView
上的点击监听器不起作用。
Following is my xml file.以下是我的 xml 文件。
<TextView
android:id="@+id/tvHomeSignIn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:layout_marginEnd="16dp"
android:background="@drawable/signin_curve_allside"
android:paddingLeft="8dp"
android:paddingTop="4dp"
android:paddingRight="8dp"
android:paddingBottom="4dp"
android:text="SIGN IN"
android:textAllCaps="true"
android:textColor="@color/white"
android:textSize="12dp"
android:textStyle="bold"
app:layout_constraintBottom_toBottomOf="@+id/imageView21"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="@+id/imageView21"
app:layout_constraintVertical_bias="0.173" />
MainActivity.kt MainActivity.kt
class HomeActivityV2 : AppCompatActivity{
lateinit var tvSignIn: TextView
lateinit var ivHomeTeam:ImageView
lateinit var ivAwayTeam:ImageView
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_home_v2)
tvSignIn= findViewById(R.id.tvHomeSignIn)
tvSignIn.setOnClickListener(clickListener)
}
val clickListener = View.OnClickListener {view ->
when (view.getId()) {
R.id.tvHomeSignIn -> launchSignInActivity()
}
}
}
Add the extensions plugin to your build.gradle file so that you don't need to use findViewById anymore.将扩展插件添加到您的 build.gradle 文件中,以便您不再需要使用 findViewById。
apply plugin: 'kotlin-android-extensions'
Then you should be able to add a click listener like so:然后你应该能够像这样添加一个点击监听器:
tvSignIn.setOnClickListener { view ->
launchSignInActivity()
}
You just need to do something like this ->你只需要做这样的事情->
class HomeActivityV2 : AppCompatActivity(), View.OnClickListener{
lateinit var tvSignIn: TextView
lateinit var ivHomeTeam:ImageView
lateinit var ivAwayTeam:ImageView
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_home_v2)
tvSignIn= findViewById(R.id.tvHomeSignIn)
tvSignIn.setOnClickListener(clickListener)
}
override fun onClick(view: View) {
when (view.id) {
R.id.tvHomeSignIn ->launchSignInActivity()
}
}
private fun launchSignInActivity(){
///Your intent method over here.
}
}
Its just same as java but a little different.它与 java 相同,但略有不同。 Check it and let me know about it.
检查并让我知道。 Thank you.
谢谢你。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.