J'essaye de créer une boîte de dialogue d'alerte avec un EditText
objet. J'ai besoin de définir le texte initial du EditText
programme. Voici ce que j'ai.
AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(this);
// ...Irrelevant code for customizing the buttons and title
AlertDialog alertDialog = dialogBuilder.create();
LayoutInflater inflater = this.getLayoutInflater();
alertDialog.setContentView(inflater.inflate(R.layout.alert_label_editor, null));
EditText editText = (EditText) findViewById(R.id.label_field);
editText.setText("test label");
alertDialog.show();
Que dois-je changer pour pouvoir avoir un EditText
objet valide ?
[Éditer]
Donc, il a été souligné par user370305 et d'autres que je devrais utiliser alertDialog.findViewById(R.id.label_field);
Malheureusement, il y a un autre problème ici. Apparemment, la définition de la vue du contenu sur le AlertDialog
provoque le blocage du programme lors de l'exécution. Vous devez le définir sur le constructeur.
AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(this);
// ...Irrelevant code for customizing the buttons and title
dialogBuilder.setView(inflater.inflate(R.layout.alert_label_editor, null));
AlertDialog alertDialog = dialogBuilder.create();
LayoutInflater inflater = this.getLayoutInflater();
EditText editText = (EditText) alertDialog.findViewById(R.id.label_field);
editText.setText("test label");
alertDialog.show();
Malheureusement, lorsque vous faites cela, alertDialog.findViewById(R.id.label_field);
revient maintenant null
.
[/Éditer]
dialogBuilder.setView(R.layout.dialog_layout);
getLayoutInflater()
lorsque leinflater
n'est pas défini.Utilisez celui-ci
la source
builder.create().show();
, vous pouvez vérifier lebuilder.show();
code pour plus de détailsTu peux écrire:
la source
Au cas où quelqu'un le voudrait à Kotlin:
Republié @ user370305 de réponse.
la source
Change ça:
pour ça:
la source
la source
la source