2014-03-27 14 views
7

Ich habe einen EditText und eine Schaltfläche in meiner Anwendung.Wie deaktiviert man Button, wenn EditText leer ist?

Wenn Sie auf die Schaltfläche klicken, wird der in EditText eingegebene Text zu einer ListView hinzugefügt.

Ich möchte die Schaltfläche deaktivieren, wenn der EditText leer ist.Wie mache ich das?

Dies ist mein Code für Schaltfläche klicken

ImageButton imb=(ImageButton)findViewById(R.id.btn_send); 
      imb.setOnClickListener(new OnClickListener() 
      { 
      @Override 
      public void onClick(View arg0) 
      { 
       EditText et = (EditText)findViewById(R.id.EditText1); 

        String str = et.getText().toString(); 
        web1.add(str); 
        Toast.makeText(ShoutSingleProgram.this, "You entered...."+str, Toast.LENGTH_SHORT).show(); 
        adapter1.notifyDataSetChanged(); 
        et.setText(""); 

        } 
      }); 
      } 

Wie kann ich das tun?

+1

fügen Sie Textwatcher hinzu. –

Antwort

24
editText1.addTextChangedListener(new TextWatcher() { 

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

          if(s.toString().trim().length()==0){ 
          button.setEnabled(false); 
          } else { 
           button.setEnabled(true); 
          } 


     } 

     @Override 
     public void beforeTextChanged(CharSequence s, int start, int count, 
       int after) { 
      // TODO Auto-generated method stub 

     } 

     @Override 
     public void afterTextChanged(Editable s) { 
      // TODO Auto-generated method stub 

     } 
    }); 
5

Einfach überprüfen nur den Zustand, in onCreate

if (et.getText().toString().trim().equals("")){ 
    button.setEnabled(false); 
} 
else{ 
button.setEnabled(true); 
} 
1

eine TextWatcher zu Ihrem EditText hinzufügen, so dass, wenn Sie den Text innerhalb ändern, Sie Taste aktiviert oder deaktiviert sich selbst.

0

auf onCreate(), bevor Schaltfläche klicken, sollten Sie den Zustand prüfen, wie,

ImageButton imb=(ImageButton)findViewById(R.id.btn_send); 
    EditText et = (EditText)findViewById(R.id.EditText1); 
    if(et.getText().toString().equals("") 
    { 
    imb.setEnabled(false); 
    } 

    imb.setOnClickListener(new OnClickListener() 
     { 
     @Override 
     public void onClick(View arg0) 
     { 
      EditText et = (EditText)findViewById(R.id.EditText1); 

       String str = et.getText().toString(); 
       web1.add(str); 
       Toast.makeText(ShoutSingleProgram.this, "You entered...."+str, Toast.LENGTH_SHORT).show(); 
       adapter1.notifyDataSetChanged(); 
       et.setText(""); 

       } 
     }); 
+1

OP benötigt einen TextWatcher. – drulabs

1

Initally in onCreate() die Taste deaktivieren. Fügen Sie dann dem Bearbeitungstext einen hinzu. innerhalb, dass der Check EditText Länge und deaktivieren, wenn es 0 ist oder sonst es ermöglichen

0

Wenn Sie die editText dort deaktivieren möchten Sie werden unter Code verwenden

editText.setEnabled(false); 
editText.setFocusable(false); 
7

Verwendung TextChangedListener und zunächst ImageButton in onCreate deaktivieren() .

Versuchen Sie, diese

public class MyActivity extends Activity { 

ImageButton imb; 
EditText et; 

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    imb = (ImageButton) findViewById(R.id.btn_send); 
    et = (EditText) findViewById(R.id.EditText1); 

    imb.setEnabled(false); // set button disable initially 

    et.addTextChangedListener(new TextWatcher() { 

     @Override 
     public void onTextChanged(CharSequence s, int start, int before, 
       int count) { 
      // TODO Auto-generated method stub 

      if (s.toString().equals("")) { 
       imb.setEnabled(false); 
      } else { 
       imb.setEnabled(true); 
      } 
     } 

     @Override 
     public void beforeTextChanged(CharSequence s, int start, int count, 
       int after) { 
      // TODO Auto-generated method stub 

     } 

     @Override 
     public void afterTextChanged(Editable s) { 
      // TODO Auto-generated method stub 

     } 
    }); 

} 

} 
0

Sie den Status eines EditText zur Laufzeit überprüfen Sie den Text Beobachter verwendet wird. Der folgende Code zählt die Textlänge und deaktiviert, wenn die Länge Null ist. diesen Code verwenden:

EditText mEditText = new EditText(this); 
    mEditText.addTextChangedListener(new TextWatcher() { 

     @Override 
     public void onTextChanged(CharSequence s, int start, int before, 
       int count) { 
      // TODO Auto-generated method stub 
      if (s.length() == 0) { 
       button.setEnabled(false); 
      } 
          else { 
          button.setEnabled(true); 
         } 
     } 

     @Override 
     public void beforeTextChanged(CharSequence s, int start, int count, 
       int after) { 
      // TODO Auto-generated method stub 

     } 

     @Override 
     public void afterTextChanged(Editable s) { 
      // TODO Auto-generated method stub 

     } 
    }); 
1

I TextUtils für eine präzise Lösung verwendet:

editText.addTextChangedListener(new TextWatcher() { 
     @Override 
     public void onTextChanged(CharSequence s, int start, int before, int count) { 
      button.setEnabled(!TextUtils.isEmpty(s.toString().trim())); 
     } 

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

     @Override 
     public void afterTextChanged(Editable s) { 
     } 
    }); 
0

Wenn Sie möchten, eine objektorientierte Lösung verwenden und Ihr Code wiederverwenden

public abstract class EmptyTextWatcher implements TextWatcher 
{ 
    public abstract void onEmptyField(); 

    public abstract void onFilledField(); 

    @Override 
    public void onTextChanged(CharSequence s, int start, int before, int count) 
    { 
     if (s.toString().trim().length() == 0) 
     { 
      onEmptyField(); 
     } else 
     { 
      onFilledField(); 
     } 
    } 

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

    } 



    @Override 
    public void afterTextChanged(Editable s) 
    { 

    } 

} 

so können Sie verwenden Sie es einfach

textView.addTextChangedListener(new EmptyTextWatcher() 
     { 

      @Override 
      public void onEmptyField() 
      { 
       button.setEnabled(false); 
      } 

      @Override 
      public void onFilledField() 
      { 
       button.setEnabled(true); 
      } 
     }); 
Verwandte Themen