Dialogue avec entrée de données
Ceci est un exemple du type de dialogue le plus utile, celui avec lequel on peut fournir des données à une application.
MainActivity.java
package net.codeandroid.dialogueavecentres; import androidx.appcompat.app.AppCompatActivity; import android.app.AlertDialog; import android.content.Context; import android.content.DialogInterface; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; public class MainActivity extends AppCompatActivity { private final Context mContexte = this; private Button mBtn; private TextView mTv1; private TextView mTv2; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // composants de activity_main.xml mBtn = findViewById(R.id.btn); mTv1 = findViewById(R.id.tv1); mTv2 = findViewById(R.id.tv2); // ajout du gestionnaire de bouton mBtn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View vue) { // va chercher la vue du dialogue dans le fichier XML LayoutInflater li = LayoutInflater.from(mContexte); View vueDialogue = li.inflate(R.layout.entrees, null); // création du "builder" AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(mContexte); // fournit la vue au builder alertDialogBuilder.setView(vueDialogue); final EditText etNom = vueDialogue.findViewById(R.id.etNom); final EditText etCategorie = vueDialogue.findViewById(R.id.etCategorie); // règle le message du dialogue alertDialogBuilder .setCancelable(false) .setPositiveButton("OK", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialogue, int id) { // va chercher l'entrée et l'affiche mTv1.setText(etNom.getText()); mTv2.setText(etCategorie.getText()); } }) .setNegativeButton("Annuler", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialogue, int id) { dialogue.cancel(); } }); AlertDialog alertDialog = alertDialogBuilder.create(); alertDialog.show(); } }); } }
activity_main.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:gravity="center"> <Button android:id="@+id/btn" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="30sp" android:text="Test"> </Button> <TextView android:id="@+id/tv1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="30sp"> </TextView> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="30sp" android:text="est un"> </TextView> <TextView android:id="@+id/tv2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="30sp"> </TextView> </LinearLayout>
entrees.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/layout_root" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:padding="10dp" > <TextView android:id="@+id/tvNom" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="25sp" android:text="Nom du personnage :"> </TextView> <EditText android:id="@+id/etNom" android:layout_width="match_parent" android:layout_height="wrap_content" android:textSize="25sp"> <requestFocus /> </EditText> <TextView android:id="@+id/tvCategorie" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="25sp" android:text="Catégorie : "> </TextView> <EditText android:id="@+id/etCategorie" android:layout_width="match_parent" android:layout_height="wrap_content" android:textSize="25sp"> </EditText> </LinearLayout>