0

onkeylistener イベントに問題があります。私のコードは次のようなものです

public void onCreate(Bundle savedInstanceState) {
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    super.onCreate(savedInstanceState);
    setContentView(R.layout.pnt_articulo);
    imbAgregarArt = (ImageButton)findViewById(R.id.imbAgregarArt);
    imbAgregarArt.setOnKeyListener(key);
}

OnKeyListener key = new OnKeyListener() {
    @Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
    if(event.getAction() == KeyEvent.ACTION_DOWN) {
    Toast.makeText(getApplicationContext(), "Clicked", Toast.LENGTH_SHORT).show();
    return true;
        }
        return false;
    }
};

デバッグを使用して Toast 行で停止します 入力しないでください

助けてください

4

1 に答える 1

2

あなたがしていることは、キーボードの押下などを意味する重要なイベントをリッスンすることであり、その目的のためにあなたのコードは完全に問題ありません。が選択されていることを確認し、ImageButton任意のキーを押すと、Toastが表示されます。

これは非常に奇妙な振る舞いなので、おそらく次のようになりますOnClickListener

....
    imbAgregarArt.setOnClickListener(click);
}

OnClickListener click = new OnClickListener() {
    @Override
    public void onClick(View v) {
        Toast.makeText(getApplicationContext(), "Clicked", Toast.LENGTH_SHORT).show();
    } 
};

OnKeyListenerに変更したことに注意してくださいOnClickListener。最初のオブジェクトはキーボードアクティビティをリッスンし、2番目のオブジェクトはオブジェクトをクリックして指(押す)またはトラックパッドなどのデバイスで選択することにより、オブジェクトとのユーザーインタラクションをリッスンします。行う。

シドノートとしてキーボードのキーを押してももう一方が機能しない理由に興味がある場合、問題はビューがフォーカスされていないという事実に起因していました。ビュー内のキーボードイベントをリッスンするには、最初にそれらを選択する必要があります。これは論理的に聞こえますか?

于 2012-05-16T17:54:08.107 に答える