onKeyDownとonCreateOptionsMenuについて

1,332 views
Skip to first unread message

レイ

unread,
Jun 14, 2009, 10:58:09 PM6/14/09
to 日本Androidの会
はじめまして、レイと申します。

Activityのイベント処理について質問です。
メニューを付けているActivityにonKeyDownを追加したところ
menuボタンを押下してもonCreateOptionsMenuがよばれず
onKeyDownがイベントを拾ってしまいます。

onKeyDownで拾ったイベントからonCreateOptionsMenuをコールするにはどうすればよいのでしょうか?


Keiji Ariyama

unread,
Jun 14, 2009, 11:28:26 PM6/14/09
to android-g...@googlegroups.com
レイさん

 有山@大阪です。出先からの回答なのでよく調べていませんが、

> メニューを付けているActivityにonKeyDownを追加したところ
> menuボタンを押下してもonCreateOptionsMenuがよばれず
> onKeyDownがイベントを拾ってしまいます。

 onKeyDownイベントの戻り値をtrueに設定していませんか?

 trueを返すと他のイベントを抑制してしまうので、他のイベントも発生させた
い場合はfalseにしておかないと駄目だったはずです。

/*********************************************
有限会社シーリス
代表 有山 圭二
@Address
〒530-0044
大阪市北区東天満二丁目2番5号
第2新興ビル 601
@Web http://www.c-lis.co.jp
*********************************************/

watanabe tomo

unread,
Jun 14, 2009, 11:51:23 PM6/14/09
to android-g...@googlegroups.com
渡辺です

有山さんに補足です
基本はこんな感じでしょうか?

CENTER_KEYを拾いたい場合です。
拾いたいキーのみを制御して、trueで返す形になります。
superクラスではデフォルトの値を返してくれます。
onKeyDown()がfalseなら、onCreateOptionsMenuがコールされます

#全部falseで返すと、BACKキーも利かなくなりますので注意

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
switch ( keyCode ) {
case KeyEvent.KEYCODE_DPAD_CENTER:
text.setText("CENTER KEY");
return true;
}
return super.onKeyDown(keyCode, event);
}

2009/06/15 12:28 に Keiji Ariyama<keiji_...@c-lis.co.jp> さんは書きました:

レイ

unread,
Jun 15, 2009, 10:44:58 PM6/15/09
to 日本Androidの会
TO)有山さん
こんにちは レイです。

ご回答ありがとうございます。
onKetDownがtrueを返すようにしておりました。

ご教授いただいた内容でメニューが開くようになりました。
ありがとうございます。


On 6月15日, 午後12:28, Keiji Ariyama <keiji_ariy...@c-lis.co.jp> wrote:
> レイさん
>
>  有山@大阪です。出先からの回答なのでよく調べていませんが、
>
> > メニューを付けているActivityにonKeyDownを追加したところ
> > menuボタンを押下してもonCreateOptionsMenuがよばれず
> > onKeyDownがイベントを拾ってしまいます。
>
>  onKeyDownイベントの戻り値をtrueに設定していませんか?
>
>  trueを返すと他のイベントを抑制してしまうので、他のイベントも発生させた
> い場合はfalseにしておかないと駄目だったはずです。
>
> /*********************************************
> 有限会社シーリス
> 代表 有山 圭二
> @Address
> 〒530-0044
> 大阪市北区東天満二丁目2番5号
> 第2新興ビル 601
> @Webhttp://www.c-lis.co.jp
> *********************************************/
>
>
>
> レイ wrote:
> > はじめまして、レイと申します。
>
> > Activityのイベント処理について質問です。
> > メニューを付けているActivityにonKeyDownを追加したところ
> > menuボタンを押下してもonCreateOptionsMenuがよばれず
> > onKeyDownがイベントを拾ってしまいます。
>
> > onKeyDownで拾ったイベントからonCreateOptionsMenuをコールするにはどうすればよいのでしょうか?- 引用テキストを表示しない -
>
> - 引用テキストを表示 -

レイ

unread,
Jun 15, 2009, 10:46:31 PM6/15/09
to 日本Androidの会

TO)渡辺さん
こんにちは レイです。

全てをfalseを返すようにしたら
BACKが出来なくなってしまっていたので、
ご教授いただいて助かりました。

ありがとうございます。


On 6月15日, 午後12:51, watanabe tomo <t...@android-group.jp> wrote:
> 渡辺です
>
> 有山さんに補足です
> 基本はこんな感じでしょうか?
>
> CENTER_KEYを拾いたい場合です。
> 拾いたいキーのみを制御して、trueで返す形になります。
> superクラスではデフォルトの値を返してくれます。
> onKeyDown()がfalseなら、onCreateOptionsMenuがコールされます
>
> #全部falseで返すと、BACKキーも利かなくなりますので注意
>
> @Override
> public boolean onKeyDown(int keyCode, KeyEvent event) {
> switch ( keyCode ) {
> case KeyEvent.KEYCODE_DPAD_CENTER:
> text.setText("CENTER KEY");
> return true;
> }
> return super.onKeyDown(keyCode, event);
>
> }
>
> 2009/06/15 12:28 に Keiji Ariyama<keiji_ariy...@c-lis.co.jp> さんは書きました:
>
>
>
>
>
> > レイさん
>
> > 有山@大阪です。出先からの回答なのでよく調べていませんが、
>
> >> メニューを付けているActivityにonKeyDownを追加したところ
> >> menuボタンを押下してもonCreateOptionsMenuがよばれず
> >> onKeyDownがイベントを拾ってしまいます。
>
> > onKeyDownイベントの戻り値をtrueに設定していませんか?
>
> > trueを返すと他のイベントを抑制してしまうので、他のイベントも発生させた
> > い場合はfalseにしておかないと駄目だったはずです。
>
> > /*********************************************
> > 有限会社シーリス
> > 代表 有山 圭二
> > @Address
> > 〒530-0044
> > 大阪市北区東天満二丁目2番5号
> > 第2新興ビル 601
> > @Webhttp://www.c-lis.co.jp
> > *********************************************/
>
> > レイ wrote:
> >> はじめまして、レイと申します。
>
> >> Activityのイベント処理について質問です。
> >> メニューを付けているActivityにonKeyDownを追加したところ
> >> menuボタンを押下してもonCreateOptionsMenuがよばれず
> >> onKeyDownがイベントを拾ってしまいます。
>
Reply all
Reply to author
Forward
0 new messages