2016-01-01 32 views
1

我是新來的android編程。我遇到一個問題,我在應用此主題中給出的解決方案很難: How to format the input of EditText when typing with thousands separators (,) in Android?我應該如何將TextChangedListener添加到EditText組件?

到目前爲止,我還做了一個單獨的Java文件和粘貼文本的主要代碼,但我不能找出如何「添加editText.addTextChangedListener(new NumberTextWatcher(editText));我的EditText組件」。 我的XML EditText上看起來是這樣的:

 <EditText 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:inputType="number" 
     android:id="@+id/editText" 
     android:layout_weight="1" 

     /> 

回答

1

首先定義的EditText變量,實例變量在類

private EditText mEditText; 

然後在一些地方如的onCreate或onViewCreated就可以初始化你的EditText並添加聽衆。

mEditText = (EditText)findViewById(R.id.edit_text); 
mEditText.addTextChangedListener(new TextWatcher() { 

    @Override 
    public void afterTextChanged(Editable s) { 

    } 

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

    } 

    @Override 
    public void onTextChanged(CharSequence s, int start, int before, int count) { 
     // Get changed text s here and use it 
    } 

}); 
1

首先,你需要找到你的活動或片段像的EditText元素:

EditText editText = (EditText) findViewById(R.id.editText); 

那麼你應該能夠做到

editText.addTextChangedListener() 

我建議你看看butterknife庫,http://jakewharton.github.io/butterknife/。如果你有很多監聽器,它會使你的代碼更加有組織。

你可以簡單地做

@OnTextChanged(R.id.editText) 
public void listener() {} 
0

在活動,得到EDITTEXT參考:

EditText et = (EditText) findViewById(R.id.editText); 
et.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) { 

    } 

    @Override 
    public void afterTextChanged(Editable editable) { 

    } 
}); 
5

您還可以使用Butterknife

@OnTextChanged(value = R.id.etName, callback = OnTextChanged.Callback.AFTER_TEXT_CHANGED) 
public void nameChanged(CharSequence text) { 
    //do stuff 
} 
相關問題