2011-12-16 36 views
0

我創建了一個簡單的自定義對話框,要求用戶「按下一個鍵」。這樣做的目的是讓我可以將他們按下的任何按鍵映射到應用程序中的某個功能。不幸的是,我無法弄清楚什麼是用來檢測關鍵事件的正確界面。我的階級是這樣的:哪個接口用於檢測來自Dialog類(Android SDK)的關鍵事件?

public class ScancodeDialog extends Dialog implements OnKeyListener 
{ 

    public ScancodeDialog(Context context) 
    { 
     super(context); 
     setContentView(R.layout.scancode_dialog); 
     setTitle("Key Listener"); 
     TextView text = (TextView) findViewById(R.id.scancode_text); 
     text.setText("Please press a button.."); 
     ImageView image = (ImageView) findViewById(R.id.scancode_image); 
     image.setImageResource(R.drawable.icon); 
     getWindow().setFlags(WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM, 
           WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM); 
    } 

    @Override 
    public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) 
    { 
     if(keyCode != KeyEvent.KEYCODE_MENU) 
      dismiss(); 
     return true; 
    } 
} 

我一直有和沒有getWindow()試過setFlags()線(這是從另一個問題,這並沒有幫助我在我的情況建議)。很明顯,我將在稍後向類中添加更多功能,但現在對話框應該在用戶按下某個鍵時關閉。但是,onKey永遠不會被調用。

我最初嘗試使用按鍵偵聽器接口從View:

import android.view.View.OnKeyListener; 

但由於一個對話框是不是認爲,這沒有奏效。我也試着從DialogInterface之一:

import android.content.DialogInterface.OnKeyListener; 

這似乎是一個更好的選擇,因爲API表示對話框實現DialogInterface,但我仍未收到該關鍵事件。任何建議,我可以嘗試?

回答

1

您從未聲明對話框來偵聽密鑰。

實施例:

this.setOnKeyListener(...) 

在此關鍵字指的是它是在..這是對話類。

+0

onkey偵聽器是'this'..我只是去「this.setOnKeyListener(this)」?這似乎是多餘的,但我會嘗試.. – paulscode 2011-12-16 04:17:10