我正在開發一個Android項目,我需要檢查空格鍵何時按下sos我可以執行某個功能。DispatchKeyEvent監聽按空格鍵
問題是,它在仿真器上工作,但不在我的實際設備上。我想這可能是因爲我的模擬器使用的是物理鍵盤,而不是屏幕上的虛擬鍵盤,但是在實際設備上測試時,它使用的是虛擬鍵盤。
我試圖調度KeyEvent的
@Override
public boolean dispatchKeyEvent(KeyEvent event)
{
if (event.getKeyCode() == KeyEvent.KEYCODE_SPACE
&& event.getAction() == KeyEvent.ACTION_UP)
{
QueryEditor queryEditor = (QueryEditor)getSupportFragmentManager().findFragmentById(R.id.fragment_queryEditor);
queryEditor.formatQueryText();
return true;
}
}
我也試過在按下按鍵
@Override
public boolean onKeyDown(int keyCode, KeyEvent event)
{
if (keyCode == KeyEvent.KEYCODE_BACK)
{
disconnectDatabase();
}
else if (keyCode == KeyEvent.KEYCODE_DEL)
{
QueryEditor queryEditor = (QueryEditor)getSupportFragmentManager().findFragmentById(R.id.fragment_queryEditor);
queryEditor.formatQueryText();
}
return super.onKeyDown(keyCode, event);
}
這些都不被解僱,雖然除非後退按鈕被按下,但我需要的空格鍵來觸發事件。
感謝您提供的任何幫助。
UPDATE
下面是我對如何創建QueryEditor片段和事件處理程序創建
@Override
public void onActivityCreated(Bundle savedInstanceState)
{
super.onActivityCreated(savedInstanceState);
iQueryEditor = (IQueryEditor)this;
iErrorHandler = (IErrorHandler)this;
txtQueryEditor = (EditText)getActivity().findViewById(R.id.query_txtQueryEditor);
btnSubmitQuery = (ImageButton)getActivity().findViewById(R.id.query_btnPerformQuery);
btnClearQuery = (ImageButton)getActivity().findViewById(R.id.query_btnDeleteQuery);
txtQueryEditor.addTextChangedListener(new QueryTextChanged(getActivity(), txtQueryEditor, iQueryEditor));
setDatabaseUsed();
txtQueryEditor.setOnEditorActionListener(new OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
if ((event != null && (event.getKeyCode() == KeyEvent.KEYCODE_ENTER))
|| actionId == EditorInfo.IME_ACTION_DONE)
{
executeQuery();
return true;
}
else if (event.getKeyCode() == KeyEvent.KEYCODE_SPACE && event.getAction() == KeyEvent.ACTION_UP)
{
Toast.makeText(getActivity(), "Space Bar Pressed", Toast.LENGTH_SHORT).show();
return true;
}
return false;
}
});
btnSubmitQuery.setOnClickListener(mBtnSubmitQueryListener);
btnClearQuery.setOnClickListener(mBtnDeleteQueryListener);
}
txtQueryEditor的是,我想收到關於空格鍵事件的EditText代碼。
此問題中的信息及其接受的答案可能有所幫助:http://stackoverflow.com/questions/5419766/how-to-capture-soft-keyboard-input-in-a-view –
你能寫嗎你怎麼激活軟鍵盤按空格鍵?它是EditText視圖還是以編程方式完成?按空格鍵時重點在哪裏? –
@Loop它是由用戶在彈出鍵盤的編輯文本內部單擊完成的,用戶按下軟空格鍵應觸發事件。 – Boardy