Je travaille sur une application qui utilise une vue personnalisée pour un AlertDialog. Je veux faire en sorte que le bouton de soumission soit désactivé si le champ de texte d'édition est vide. J'ai trouvé quelques exemples en ligne mais ma mise en œuvre ne cesse de retourner null sur la référence au bouton submit. dès que j'entre un texte dans l'edittext, l'application se bloque. voici la classe AlertDialog avec ma tentative échouer à saisir le bouton commenté:référence au bouton AlertDialog personnalisé renvoie null lorsque onTextChanged
public class FileNameDialogFragment extends DialogFragment {
private static final String TAG = "dialogFragment";
private EditText namefield;
private Button submit;
@Override
public Dialog onCreateDialog(Bundle savedInstanceState){
LayoutInflater inflater = LayoutInflater.from(getActivity());
View v = inflater.inflate(R.layout.file_prompt_dialog, null, false);
namefield = (EditText) v.findViewById(R.id.nameField);
AlertDialog dialog = new AlertDialog.Builder(getActivity())
.setTitle(R.string.dialog_title)
.setView(v)
.setIcon(R.drawable.icon)
.setPositiveButton(R.string.btnOK, new DialogInterface.OnClickListener(){
@Override
public void onClick(DialogInterface dialog, int which) {
MainActivity.setFileName(namefield.getText().toString());
String fileName = namefield.getText().toString();
Toast.makeText(getActivity(), MainActivity.getUrl().toString(), Toast.LENGTH_SHORT).show();
MainActivity.download(MainActivity.getUrl(), getActivity(), MainActivity.getPath(), fileName);
}
})
.setNegativeButton(R.string.btnCancel, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dismiss();
}
})
.create();
//I have also tried to place the code that is below here. neither works
dialog.show();
/*
* this is the section of code that i am having trouble with
*
submit = ((AlertDialog)dialog).getButton(AlertDialog.BUTTON_POSITIVE);
namefield.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
//left intentionally blank
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
if (count == 0){
submit.setEnabled(false);
}else{
submit.setEnabled(true);<--NullPointerException
}
}
@Override
public void afterTextChanged(Editable s) {
//left intentionally blank
}
});*/
return dialog;
}
}
J'espère savoir comment faire ce travail comme un moyen de valider l'entrée. Je ne veux pas que l'utilisateur puisse laisser ce champ vide parce que l'entrée est utilisée pour nommer un fichier téléchargé sur Internet.
Vous définissez une vue personnalisée dans la boîte de dialogue. Je pense que le 'getButton' standard ne fonctionnera pas, et vous devez employer' v.findViewByID() ' –
Veuillez attacher le journal. –