Basically, I have a layout with an EditTex with multiline input type and a clickable TextView
. The problem comes when I click the TextView
It seems that setOnClcickListener isn't working properly.
The debugger of the code shows that the listener doesn't recognize the click.
Activity layout:
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">
<EditText
android:id="@+id/reviewText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginLeft="8dp"
android:layout_marginTop="8dp"
android:layout_marginEnd="8dp"
android:layout_marginRight="8dp"
android:layout_marginBottom="8dp"
android:gravity="start"
android:inputType="textPassword"
android:textAlignment="textStart"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.069" />
<TextView
android:id="@+id/submitReviewTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginLeft="8dp"
android:layout_marginTop="8dp"
android:layout_marginEnd="8dp"
android:layout_marginRight="8dp"
android:layout_marginBottom="8dp"
android:clickable="true"
android:focusable="true"
android:text="Enviar Crítica"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.974"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/reviewText"
app:layout_constraintVertical_bias="0.575" />
</android.support.constraint.ConstraintLayout>
And the Activity code:
package com.example.myapplication
import android.support.v7.app.AppCompatActivity
import android.os.Bundle
import android.util.Log
import android.view.View
import android.widget.Toast
import kotlinx.android.synthetic.main.activity_main.*
class MainActivity : AppCompatActivity() {
private var reviewConditionsOk = true
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
submitReviewTextView.setOnClickListener {
checkMandatoryReviewConditions()
if (!reviewText.text.isEmpty() && !reviewConditionsOk) {
Log.d("Test", "Button Clicked")
Toast.makeText(applicationContext,
"La crítica no a de estar vacía y tiene que tener un mínimo de 5 líneas.",
Toast.LENGTH_LONG
).show()
}
}
}
override fun onBackPressed() {
super.onBackPressed()
finish()
}
private fun checkMandatoryReviewConditions() {
reviewText.onFocusChangeListener = View.OnFocusChangeListener { _, hasFocus ->
if (hasFocus) {
reviewConditionsOk = reviewText.text.toString().trim().length < 5
}
}
}
}
I tested the code along with the code myself and found no problem with the click listener. The event is triggered correctly. You need to modify the following condition so that it shows the Toast
that you want to get.
if (!reviewText.text.isEmpty() && !reviewConditionsOk) // Fix this
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.