दबाए जाने के लिए 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);
}
इनमें से न तो हालांकि जब तक वापस बटन दबाया जाता है निकाल दिया कुंजी पर की कोशिश की है, लेकिन मैं नीचे की जरूरत है घटना ट्रिगर करने के लिए स्पेसबार।
आपकी सहायता के लिए धन्यवाद।
अद्यतन
नीचे कैसे 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 –
आप लिख सकते हैं स्पेस बार दबाए रखने के लिए आप सॉफ्ट कीबोर्ड कैसे सक्रिय करते हैं? क्या यह संपादन टेक्स्ट दृश्य है या क्या यह प्रोग्रामेटिक रूप से किया जाता है? जब आप स्पेस बार दबाते हैं तो फोकस कहां है? –
@ लूप यह उपयोगकर्ता द्वारा संपादित किए गए संपादन टेक्स्ट के अंदर क्लिक किया जाता है जो कीबोर्ड को पॉपअप करता है और नरम स्पेसबार दबाकर उपयोगकर्ता को ईवेंट ट्रिगर करना चाहिए। – Boardy