2012-10-04 32 views
0

這裏是我的問題,我正在設計一個應用程序,我使用兩個編輯文本和按鈕,所以當我使用最大長度爲4的輸入過濾器並將焦點設置爲其他編輯文本時我寫,焦點傳遞給第二個編輯文本,但它不寫我輸入的東西,而是繼續寫在第一個。使用兩個edittexts

有沒有辦法只在第一個編輯文本停止寫入4個字符,然後寫在第二個沒有改變第一個謝謝。

這裏是我的問題的部分代碼:

String inDigit = ((Button) view).getText().toString(); 
//Costo de venta 
if (inStr.equals("0")) { 
    inStr = inDigit; 
} else { 
inStr += inDigit; 
} 
int maxLength = 4; 
InputFilter[] FilterArray = new InputFilter[1]; 
FilterArray[0] = new InputFilter.LengthFilter(maxLength); 
editX.setFilters(FilterArray); 
editX.setText(inStr); 

if(editX.getText().toString().length() == 4) 
{ 
    if(editX.hasFocus()){ 
     editY.requestFocus(); 
     return; 
    } 

    }else { 
     editY.getText().toString(); 
     editY.setText(""); 
    } 

    if (lastOperator == '=') { 
     result = 0; 
     lastOperator = ' '; 
    } 

回答

1

有沒有辦法容下4個字符,在它的第一個編輯文本停止寫作,然後在第二個沒有寫改變第一個

是的。假設您已經將第一個EditText稱爲edit,第二個是類變量edit2。我們將使用TextWatcher一旦你超過第四個字符從edit焦點切換到edit2

edit.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) {} 

    @Override 
    public void afterTextChanged(Editable s) { 
     if(s.length() == 4) { 
      edit2.requestFocus(); 
     } 
    } 
});