2013-01-19 1 views
6

Ecco il mio codice per una finestra di dialogo, voglio disabilitare il pulsante positivo se la dimensione del testo in edit-testo in maggiore di 5 e abilitarlo se la dimensione < = 5Android disabilitare il pulsante positivi su alcuni condion in addTextChangedListener (EditExt)

private void myDialog(String title) { 
      AlertDialog.Builder builder = new AlertDialog.Builder(context); 


      // Get the layout inflater 
      LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

      View dialogView = inflater.inflate(R.layout.new_dialog, null); 

      // Inflate and set the layout for the dialog 
      // Pass null as the parent view because its going in the dialog layout 
      builder.setView(dialogView); 

      final EditText dialogEdittext = (EditText) dialogView.findViewById(R.id.dialog_editText); 
      final TextView dialogMessage = (TextView) dialogView.findViewById(R.id.dialog_limit); 

      dialogEdittext.addTextChangedListener(new TextWatcher() { 

       @Override 
       public void onTextChanged(CharSequence s, int start, int before, int count) { 
       } 

       @Override 
       public void beforeTextChanged(CharSequence s, int start, int count, int after) { 
       } 

       @Override 
       public void afterTextChanged(Editable s) { 

        // if text length is greater than 5 disable positive button 
           // else enable 
       } 
      }); 

      builder.setPositiveButton("Ok", new DialogInterface.OnClickListener() { 
       @Override 
       public void onClick(DialogInterface dialog, int id) { 

      }); 

      builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() { 
       @Override 
       public void onClick(DialogInterface dialog, int id) { 
       } 
      }); 

      final Dialog dialog = builder.create(); 
      dialog.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE); 
      dialog.show(); 

     } 
+0

fai riferimento a questo link http://stackoverflow.com/questions/8238952/how-to-disable-enable-dialog-negative-possitive-buttons –

+0

ho già visto questo link, disabiliterà/abiliterà il pulsante una sola volta quando il dialogo è creato, ma voglio questo ogni volta che l'utente inserisce un personaggio in edittext – Androider

+0

Non lo faccio mai in questo modo. ho fatto tih usando la finestra di dialogo personalizzata con il pulsante e in quel controllo la convalida. puoi farlo in quel modo. prova la finestra di dialogo –

risposta

16

provare qualcosa di simile:

@Override 
public void afterTextChanged(Editable s) { 
    if (s.length() > 5) { 
     dialog.getButton(Dialog.BUTTON_POSITIVE).setEnabled(false); 
    } else { 
     dialog.getButton(Dialog.BUTTON_POSITIVE).setEnabled(true); 
    } 
} 

dove dialog è:

final AlertDialog dialog = builder.create(); 
+0

non può essere risolta – Androider

+4

ha funzionato ma ho dovuto spostare dialogEdittext.addTextChangedListener ..... sotto .... dialog.show(); – Androider

+0

@SyedZahidAli Era necessario perché hai dichiarato 'TextWatcher' prima che la variabile' dialog' fosse creata in modo che non potesse vederla. – Luksprog