J'ai AlertDialog avec des boutons positifs et négatifs. Dans AlertDialog, j'ai EditText et deux boutons (btnAdd1, btnAdd2). Je veux quand l'utilisateur clique sur le bouton btnAdd1 ou btnAdd2 ajouter le même texte à EditText dans AlertDialog (mais pas AlertDialog proche) Est-ce possible faire dans AlertDialog ou dois-je utiliser uniquement Dialog?
Voici la présentation (R.layout.Prompt) de AlertDialog:
<LinearLayout>
<EditText
Android:id="@+id/userInput"
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:inputType="text" >
<requestFocus />
</EditText>
<Button
Android:id="@+id/btnAdd1"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:text="bla" />
<Button
Android:id="@+id/btnAdd2"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:text="bla" />
</LinearLayout>
Et c'est le code source:
LayoutInflater layoutInflater = LayoutInflater.from(this);
View promptView = layoutInflater.inflate(R.layout.Prompt, null);
AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(this);
alertDialogBuilder.setView(promptView);
alertDialogBuilder
.setCancelable(false)
.setPositiveButton("OK", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
//...
}
})
.setNegativeButton("Cancel",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
dialog.cancel();
}
});
AlertDialog alertD = alertDialogBuilder.create();
alertD.show();
Je veux avoir accès à btnAdd1 et btnAdd2 à partir de la mise en page. Définissez OnClickListener () sur ces deux boutons.
Le code suivant va gonfler une vue à partir de R.layout.Prompt
et le définir sur AlertDialog. Les boutons positive
et negative
ne seront pas utilisés. Vous pouvez définir les comportements onClick
pour btnAdd1
et btnAdd2
:
LayoutInflater layoutInflater = LayoutInflater.from(this);
View promptView = layoutInflater.inflate(R.layout.Prompt, null);
final AlertDialog alertD = new AlertDialog.Builder(this).create();
EditText userInput = (EditText) promptView.findViewById(R.id.userInput);
Button btnAdd1 = (Button) promptView.findViewById(R.id.btnAdd1);
Button btnAdd2 = (Button) promptView.findViewById(R.id.btnAdd2);
btnAdd1.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
// btnAdd1 has been clicked
}
});
btnAdd2.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
// btnAdd2 has been clicked
}
});
alertD.setView(promptView);
alertD.show();
ce que vous voulez faire est
alertD.show();
Button button = (Button)promptView.findViewById(R.id.buttonId);
button.setOnClickListener(....)
utiliser la vue pour appeler findViewById
, plutôt que l'activité, qui recherchera l'identifiant dans la présentation affichée.
Selon cette approche, je suis en mesure de créer le bouton d’image mais si je veux rejeter ou annuler le dialogue sur le bouton Annuler, alors ce que je dois faire ..
public static void alertDialogShow(final Context context,
final String resultMobile) {
LayoutInflater li = LayoutInflater.from(context);
View promptsView = li.inflate(R.layout.Prompt,
null);
AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(
context, AlertDialog.THEME_DEVICE_DEFAULT_LIGHT);
// set prompts.xml to alertdialog builder
alertDialogBuilder.setView(promptsView);
final EditText userInput = (EditText) promptsView
.findViewById(R.id.editTextDialogUserInput);
userInput.setText(resultMobile);
userInput.setEnabled(false);
btnCancel.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
}
});
Ma solution pour votre question.
LayoutInflater layoutInflater = LayoutInflater.from(this);
View promptView = layoutInflater.inflate(R.layout.Prompt, null);
AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(this);
alertDialogBuilder.setView(promptView);
Button btn_1= (Button)promptView.findViewById(R.id.btnAdd1);
btn_1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//do required function
// don't forget to call alertD.dismiss()
}
});
Button btn_2 = (Button)promptView.findViewById(R.id.btnAdd2);
btn_2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//do required function
}
});
alertDialogBuilder
.setCancelable(false)
AlertDialog alertD = alertDialogBuilder.create();
alertD.show();