TexView onClickListener не работает из деятельности на основе Kotlin - PullRequest
0 голосов
/ 25 сентября 2019

Я недавно переключился на kotlin, создал действие и добавил в него несколько просмотров, но приемник щелчков на моем TextView не работает.

Ниже приведен мой 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

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()
        }
    }


 }

Ответы [ 2 ]

1 голос
/ 25 сентября 2019

Добавьте плагин расширений в свой файл build.gradle, чтобы вам больше не приходилось использовать findViewById.

apply plugin: 'kotlin-android-extensions'

Затем вы сможете добавить прослушиватель кликов, например, так:

tvSignIn.setOnClickListener { view ->
    launchSignInActivity()
}
0 голосов
/ 25 сентября 2019

Вам просто нужно сделать что-то вроде этого ->

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.
   }
 }

Это так же, как Java, но немного по-другому.Проверьте это и дайте мне знать об этом.Спасибо.

...