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>
