2016-08-28 65 views
0

每當EditText字符串被更改時,調用onTextChangededitText上的setText時TextWatcher.onTextChanged不調用

現在當我開始新的Activity並通過Bundle發送數據時,不會調用onTextChanged

if(getIntent().getExtras() != null) { 
    Bundle b = getIntent().getExtras(); 
    int value = -1; 

    if(b != null) 
     value = b.getInt("key"); 
    edit1.setText("Mywords:"); 
} 

我該怎麼稱呼它?

回答

1

所以這裏是你的代碼的修改版本。這個想法是在你添加一個TextWatcher後在EditText中設置文本。

if(getIntent().getExtras() != null) { 
    Bundle b = getIntent().getExtras(); 
    int value = -1; 

    if(b != null) 
     value = b.getInt("key"); 

    // Add the TextWatcher here 
    edit1.addTextChangedListener(new TextWatcher() { 
     @Override 
     public void beforeTextChanged(CharSequence s, int start, int count, int after) { 
      // Toast.makeText(MainActivity.this, "before text changed", Toast.LENGTH_LONG).show(); 
     } 

     @Override 
     public void onTextChanged(CharSequence s, int start, int before, int count) { 
      // Toast.makeText(MainActivity.this, "on text changed", Toast.LENGTH_LONG).show(); 
     } 

     @Override 
     public void afterTextChanged(Editable s) { 
      // Toast.makeText(MainActivity.this, "after text changed", Toast.LENGTH_LONG).show(); 
     } 
    }); 

    // Now the set the value in your EditText 
    edit1.setText("Mywords:"); 
} 
+0

感謝它的工作 – phpdroid

0

嘗試以下操作:

edit1.addTextChangedListener(new TextWatcher() { 

     public void afterTextChanged(Editable s) {} 

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

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

參考:android on Text Change Listener

+0

我已經用它以相同的方式,你的意思是每次它改變文本使用setText我必須每次創建內部類? – phpdroid

+0

不,你不必每次都創建內部類,請給我們你的代碼來幫助你。 –

2

確保您setText調用之前與TextWatcher訂閱。

+0

你的意思是實現TextWatcher類嗎? – phpdroid

+1

我的意思是,對'edit1.addTextChangedListener'的調用應該在'edit1.setText'之前。 – j2ko

相關問題