我正在創建一個應用程序,我希望該用戶可以在運行時輸入IP地址。 其中我設計了4個編輯文本,用戶可以輸入IP地址。我爲它創建了XML。 現在我創建了一個擴展TextWatcher的自定義類來爲EditText設置addTextChangedListener。編輯文本最初沒有輸入點擊Android
ipSlotFirst=(EditText)ipSettings.findViewById(R.id.ip_slot1);
ipSlotFirst.setFilters(FilterArray);
CustomOnTextChangeListener slot1=new CustomOnTextChangeListener(ipSlotFirst);
ipSlotFirst.addTextChangedListener(slot1);
ipSlotSecond=(EditText)ipSettings.findViewById(R.id.ip_slot2);
ipSlotSecond.setFilters(FilterArray);
CustomOnTextChangeListener slot2=new CustomOnTextChangeListener(ipSlotSecond);
ipSlotSecond.addTextChangedListener(slot2);
ipSlotThird=(EditText)ipSettings.findViewById(R.id.ip_slot3);
ipSlotThird.setFilters(FilterArray);
CustomOnTextChangeListener slot3=new CustomOnTextChangeListener(ipSlotThird);
ipSlotThird.addTextChangedListener(slot3);
ipSlotFourth=(EditText)ipSettings.findViewById(R.id.ip_slot4);
ipSlotFourth.setFilters(FilterArray);
CustomOnTextChangeListener slot4=new CustomOnTextChangeListener(ipSlotFourth);
ipSlotFourth.addTextChangedListener(slot4);
現在我想,當用戶輸入三位在一個EditText上它會自動轉移到下一個編輯文本,當用戶刪除EDITTEXT的內容和重點轉移到前面的編輯文本一次編輯的內容文本變成空的。我用一個customOnTextChangeListener類做了它。
class CustomOnTextChangeListener implements TextWatcher{
/** The m focused view. */
EditText mFocusedView;
/**
* Instantiates a new custom on text change listener.
*
* @param pFocusedView the focused view
*/
public CustomOnTextChangeListener(EditText pFocusedView){
mFocusedView = pFocusedView;
}
@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) {
if(mFocusedView.equals(ipSlotFirst)){
if(s.length()>=3){
ipSlotSecond.requestFocus();
}
}else if(mFocusedView.equals(ipSlotSecond)){
if(s.length()>=3){
ipSlotThird.requestFocus();
}else if(s.length()==0){
ipSlotFirst.requestFocus();
}
}
else if(mFocusedView.equals(ipSlotThird)){
if(s.length()>=3){
ipSlotFourth.requestFocus();
}else if(s.length()==0){
ipSlotSecond.requestFocus();
}
}else if(mFocusedView.equals(ipSlotFourth)){
if(s.length()>=3){
portNumber.requestFocus();
}else if(s.length()==0){
ipSlotThird.requestFocus();
}
}
}
}
一切工作正常。但是當我在第一個編輯文本中輸入192這樣的IP時,我遇到了一個問題,然後它自動轉換到第二個編輯文本,然後我輸入了10,然後點擊第三個編輯文本,然後點擊一個數字,然後第一次編輯文本沒有進行輸入。
請幫忙在這方面。
問候
迪帕克·戈埃爾
這種類型的點擊對焦的手動移動嘗試在** ** afterTextChanged事件編寫代碼 – Hanry
檢查我編輯的答案 – ngesh
謝謝雅爾這對我很有用 –