2
我有一個EditText
字段,我想介紹某種自動填充功能。如果按下「S」按鈕,我目前所要做的就是用「特殊CT」填充EditText框。這是我的:在EditText上實現自動填充
ctEditText = (EditText) findViewById(1001);
ctEditText.setOnKeyListener(new OnKeyListener() {
public boolean onKey(View v, int keyCode, KeyEvent event) {
Log.i("KEY", "PRESSED");
// if keydown and "enter" is pressed
if ((event.getAction() == KeyEvent.ACTION_DOWN)
&& (keyCode == KeyEvent.KEYCODE_ENTER)) {
return true;
} else if ((event.getAction() == KeyEvent.ACTION_DOWN)
&& (keyCode == KeyEvent.KEYCODE_S)) {
Log.i("KEY", "S");
if(ctEditText.getText().toString().length() == 1) {
ctEditText.setText("Special CT");
}
return true;
}
return false;
}
});
有了這段代碼,按下「S」按鈕對我來說絕對沒有什麼。在我按下鍵盤右下角的輸入按鈕之前,我的LogCat不會顯示任何LogCall。當我按下輸入按鈕時,無論在輸入按鈕之前按下了多少個不同的按鍵,它都會顯示KEY PRESSED
日誌調用兩次。
編輯
所以它亂搞經過一些我已經意識到,Log
呼叫出現兩次的原因是因爲當我釋放了輸入鍵,以及它正在出現。我也有S鍵撥打KEY PRESSED
日誌通話,但它仍然不被我的If statement
識別。
我嘗試使用第一碼塊,但不幸的是按下「S」鍵根本不觸發「OnKeyListener」,所以if語句甚至沒有機會到達。至於'TextWatcher',我認爲這對我的情況來說不是最好的。我有很多EditText字段可以操作,但是隻有少數人可以通過TextWatcher獲得更多收益,我想保持它的統一。 – JuiCe