2016-08-30 185 views
0

我在android中有一個editText,並且我想要在輸入或文本添加時監聽。什麼是Android中的OnInputListener相當於

我正在動態設置文本,我想要一個情況,一旦完成,一個新事件被觸發。

code.setText(savedcode); 

code.addTextChangedListener(new TextWatcher() { 
       @Override 
       public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) { 

       } 

       @Override 
       public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) { 
        Toast.makeText(Verification.this, "New Input" , Toast.LENGTH_SHORT).show(); 
       } 

       @Override 
       public void afterTextChanged(Editable editable) { 

       } 
      }); 

我已經使用了文本觀察器,但它不會觸發事件,當輸入被動態設置,除非我編輯字段,然後它。我知道在JavaScript中,輸入監聽器可以做到這一點,所以我正在尋找它的Android等效。謝謝

+0

所以你想在按下完成按鈕時觸發一個事件? –

+1

在設置文本觸發TextWatcher之前,您必須添加TextWatcher。 –

+0

我想實現的是當文本被設置時,表單提交自己。不希望用戶按下按鈕。 –

回答

0

嗯,問題在於你的代碼看起來是正確的,唯一做錯的是順序。

實際上,您想知道textView的文本何時發生更改,但在添加文本之前更改它。

所以去的合乎邏輯的方式是這樣的:

TextView TV; 

TV = (TextView) rootView.findViewById(R.id.theID); 

TV.addTextChangedListener(new TextWatcher() { 
      @Override 
      public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) { 

      } 

      @Override 
      public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) { 
       Toast.makeText(Verification.this, "New Input" , Toast.LENGTH_SHORT).show(); 
      } 

      @Override 
      public void afterTextChanged(Editable editable) { 

      } 
     }); 

TV.setText(savedcode); 

這樣,你改變了文本,一旦你確實有一個監聽器那裏,不應該before.That解決您的問題。

P.S:我不知道你是如何聲明你的textView的,不介意變量的名字,此刻沒有靈感。

+0

謝謝,只需移動代碼即可。這解決了我的問題... –

+0

所有good.Have有趣的編碼! – Vlad