2017-10-29 8 views
1

2つのEditTextが空でない場合にのみ、ボタンをアクティブに設定します。私はそれをTextWatcherを使用しようとするが、価格入力からすべてのテキストを消去しても、実際にはうまく動作しない - ボタンはアクティブのままである。ここに私のコードです:2つのeditTextが空でない場合、ボタンをアクティブに設定します。

final EditText titleEdit = findViewById(R.id.name); 
    final EditText priceEdit = findViewById(R.id.price); 
    final Button addButton = findViewById(R.id.add); 


    titleEdit.addTextChangedListener(new TextWatcher() { 
     @Override 
     public void beforeTextChanged(CharSequence s, int start, int count, int after) { 

     } 

     @Override 
     public void onTextChanged(CharSequence s, int start, int before, int count) { 
      if (!TextUtils.isEmpty(titleEdit.getText().toString().trim()) && !TextUtils.isEmpty(priceEdit.getText().toString().trim())) 
       addButton.setEnabled(true); 
      else addButton.setEnabled(false); 
     } 

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

私はいくつかの解決策をStackoverflowから試しましたが、それでも同じです。コードで何を変更すればよいですか?

+0

あなたのエラーは何ですか –

+0

私のアプリケーションを実行すると、ボタンは無効になります。私はtitleEditとpriceEditを埋める - ボタンはまだ無効です。その後、titleFieldにもう少し追加して、この瞬間のボタンだけが有効になります – Aldres

+0

私の編集した答えを確認してください –

答えて

1

public class classname extends AppCompatActivity { 

    Boolean text1= false; 
    Boolean text2 = false; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 

     //Your code 

     titleEdit.addTextChangedListener(new TextWatcher() { 
      @Override 
      public void beforeTextChanged(CharSequence s, int start, int count, int after) { 

      } 

      @Override 
      public void onTextChanged(CharSequence s, int start, int before, int count) { 
       if (s.length() > 0){ 
        text1 = true; 
        if(text1 && text2){ 
         addButton.setEnabled(true); 
        } 
       }else{ 
        text1 = false; 
        addButton.setEnabled(false); 
       } 
      } 

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

     priceEdit.addTextChangedListener(new TextWatcher() { 
      @Override 
      public void beforeTextChanged(CharSequence s, int start, int count, int after) { 

      } 

      @Override 
      public void onTextChanged(CharSequence s, int start, int before, int count) { 
       if (s.length() >0){ 
        text2 = true; 
        if(text1 && text2){ 
         addButton.setEnabled(true); 
        } 
       }else{ 
        text2 = false; 
        addButton.setEnabled(false); 
       } 
      } 

      @Override 
      public void afterTextChanged(Editable s) { 
      } 
     }); 
    } 
} 
をお試しください
+0

テキスト1とテキスト2にはTextWatcherからアクセスできません – Aldres

+0

最終的な場合は、値を変更することはできません – Aldres

+0

はいこれらの両方をクラスメンバーとして作成してください@Aldres –

1
  • あなたはどちらのEditTextセクションTextWatcherを作成する必要があります。
  • チェックif (s.length()>0))

Boolean text1= false; 
Boolean text2 = false; 

完全なコードグローバル変数として、次の変数を定義し

titleEdit.addTextChangedListener(new TextWatcher() { 
     @Override 
     public void beforeTextChanged(CharSequence s, int start, int count, int after) { 

     } 

     @Override 
     public void onTextChanged(CharSequence s, int start, int before, int count) { 
      if (s.length()>0)) 
      { 
      addButton.setEnabled(true); 
      } 
      else 
      { 
      addButton.setEnabled(false); 
      } 


     } 

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

    priceEdit.addTextChangedListener(new TextWatcher() { 
     @Override 
     public void beforeTextChanged(CharSequence s, int start, int count, int after) { 

     } 

     @Override 
     public void onTextChanged(CharSequence s, int start, int before, int count) { 
      if (s.length()>0)) 
      { 
      addButton.setEnabled(true); 
      } 
      else 
      { 
      addButton.setEnabled(false); 
      } 
     } 

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

したがって、2つのtextWatchersがtrueの場合にのみボタンが有効になります。 – Aldres

+0

2つの入力が満たされている場合にのみ、ボタンをアクティブにします。このソリューションは、1つのフィールドでのみ機能します。 しかし、私がアプリを起動すると、入力が完了した後にボタンがアクティブになります。 – Aldres

+0

@AldresはSTRING /ブール変数をグローバルに作成します。この変数はスーシンPvのように –

関連する問題