J'ai essayé de l'exécuter, mais la vue Modifier le texte n'a donné aucune réponse en cliquant. Le sélecteur de date n'était même pas ouvert. Qu'est-ce qui ne va pas ici ?

S'il vous plaît aidez-moi avec une réponse élaborée avec le code complet puisque je suis un débutant. Merci

XML

<EditText
    android:id="@+id/add_date"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginStart="32dp"
    android:layout_marginLeft="32dp"
    android:layout_marginTop="16dp"
    android:ems="10"
    android:hint="Enter Date"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toBottomOf="@+id/add" />

MainActivity

public class addScreen extends AppCompatActivity {

EditText dateFormat;
int year, month, day;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.add_screen);

    {
        dateFormat = findViewById(R.id.add_date);
        final Calendar calendar = Calendar.getInstance();
        dateFormat.setOnClickListener(v -> {
            year = calendar.get(Calendar.YEAR);
            month = calendar.get(Calendar.MONTH);
            day = calendar.get(Calendar.DAY_OF_MONTH);
            DatePickerDialog datePickerDialog = new DatePickerDialog(addScreen.this, (view, year, month, dayOfMonth) -> dateFormat.setText(SimpleDateFormat.getDateInstance().format(calendar.getTime())), year, month, day);
            datePickerDialog.show();
        });
    }
}

}

1
Suryansh Kushwaha 17 nov. 2020 à 21:34

1 réponse

Meilleure réponse

Comme l'a dit Ben P dans le commentaire ci-dessus, EditText est focusable par défaut.

Donc, si vous voulez l'empêcher d'afficher le clavier et d'écouter simplement l'écouteur de clic, vous devrez peut-être arrêter le focus cette ligne ci-dessous, faites-le donc ajoutez-le à la déclaration EditText dans votre xml

android:focusable="false"

Et c'est tout, votre EditText peut maintenant écouter votre écouteur de clic.

PS Je vous recommande d'utiliser le matériel TextInputLayout et TextInputEditText qui a une belle apparence et suit l'UX moderne lorsqu'il s'agit de créer et de saisir un champ et de le montrer à votre utilisateurs.

0
Ahmed Mousa 17 nov. 2020 à 20:06