ユーザーに「キーを押してください」と尋ねる簡単なカスタムダイアログを作成しました。これの目的は、アプリケーションの機能にどのキーを押してもマップできるようにすることです。残念ながら、私はキーイベントを検出するために使用する正しいインタフェースが何であるか把握できません。 。私はとは、GetWindow()なしでそれを試してみた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;
}
}
でsetFlags()行(つまり、私の場合で私を助けていない別の質問からの提案だった):私のクラスでは、このようになります。当然のことながら、後でクラスに多くの機能を追加しますが、ユーザーがキーを押すたびにダイアログボックスを閉じる必要があります。ただし、onKeyは決して呼び出されません。
import android.view.View.OnKeyListener;
をしかし、ダイアログではなくビューであることから、これは動作しませんでした:
私はもともとビューからキーリスナーインタフェースを使用してみました。 APIは、ダイアログがDialogInterfaceを実装していることを示しているので、
import android.content.DialogInterface.OnKeyListener;
これは、より良い選択のように思えたが、私はまだキーイベントを受信していない:私はまたDialogInterfaceから1を試してみました。私は何を試すことができますか?
onkeyリスナーは 'this' ..私は "this.setOnKeyListener(this)"に行きますか?それは重複しているようだが、私は試してみる.. – paulscode
それはうまくいった、あなたは天才だ!私はそれを試みることは決して考えなかったでしょう。 A +++ – paulscode
また、全体を実装する代わりに匿名のリスナーを試すこともできます。 – JoxTraex