2011-06-30 8 views
7

これは私の問題です。それは長い時間のために押している間、いくつかの特定のタスクを行うには自分のアプリケーションのためのメニューが表示されている間にAndroidハンドリングキーアップイベント

Iオーバーライド音量ダウンキーは、それが正常に正常に動作します。私はキーダウンを傍受し、そのイベントをキーアップすることができます。

キーリスナーイベントは、このコンポーネントが使用されている活動中の特定のカスタムコンポーネントとしないで書かれています。私は音量ダウンキーを押した、とメニューが表示されている間、私はそれを解放するとき、私はイベントまでそのキーを傍受することはできませんしながら、私は、メニューボタンを押したときに

問題が発生します。

あなたはその背後にある理由を説明できますか?そして、この問題が解決できるかどうか?

ありがとうございました。

答えて

5

メニューをクリックすると、ウィンドウのフォーカスが変更されます。フォーカスはメニュービューになります。このためonKeyDown()は動作しません。これは、画面のフォーカスが上にあるビューまたはアクティビティにある場合にonKeyDownが機能するためです。

@Override 
    public void onWindowFocusChanged(boolean hasFocus) { 
     // TODO Auto-generated method stub 
     System.out.println("....window focus changed.."); 
     super.onWindowFocusChanged(hasFocus); 
    } 
+0

私はフォーカスを持っている画面を決定することができ、画面のフォーカスを知るために、次のコードを使用して...でも私は、 ')this.requestFocus('でフォーカスを変更したが、この提案はしていません作業...ボリュームダウンキーは、アプリケーション固有の動作ではなく、ボリューム[システムデフォルト動作]を減少させます。 – Prasham

+0

私は彼がそれを解決する方法ではなく、起きない理由だった質問に正しく答えだと思います。メニューシステムにコントロールとフォーカスがある場合、アクティビティはキー入力を受け取りません。 – Idistic

関連する問題