В monotouch теперь есть некоторые общие ограничения . Я думаю, что вы должны проверить свой код для одного из них.
Я обнаружил, что возвращаю true
для всех событий, где я должен был только вернуть его для кода, который я использовал. Я переместил return true в область действия оператора if
и вернул false
в противном случае Это вернуло мое меню!
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
super.onKeyDown(keyCode, event);
if (keyCode == KeyEvent.KEYCODE_BACK) {
dba.close();
Intent result = new Intent("Complete");
setResult(Activity.RESULT_OK, result);
finish();
return true;
}
return false;
}
Что ж, при просмотре документации API выделяется только то, что атрибут android: clickable необходимо установить, а также включить представление, чтобы метод onKeyDown (...) работал.
Возможно, ваше действие поглощает ключевое событие. Переопределите onKeyDown в действии и установите там точку останова.
Также: когда вы говорите, что «поместили его в основную форму», используете ли вы макет XML или делаете это в своем коде?
I had a similar problem and solved it by adding
this.requestFocus();
this.setFocusableInTouchMode(true);
in the constructor of my SurfaceView subclass.
Я решил удалить оператор if, например:
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
switch(keyCode)
{
case KeyEvent.KEYCODE_CAMERA:
videoPreview.TakePicture();
return true;
}
return super.onKeyDown(keyCode, event);
}