如何在Fragment中实现onKeyDown

How to implement onKeyDown in Fragment

我将所有活动更改为片段。我卡在了 onkeydown 部分。

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (!sector.getText().toString().equals("Sector") && (media.isChecked() || completa.isChecked())) {
        siguiente.setEnabled(true);
    } else {
        siguiente.setEnabled(false);
    }
    return super.onKeyDown(keyCode, event);
}

您可以通过在片段 class 中定义方法来做到这一点。例如:

public void onMyKeyDown(int key, KeyEvent event){
 //define your statement like
 if (Integer.parseInt(android.os.Build.VERSION.SDK) > 5
            && key == KeyEvent.KEYCODE_BACK
            && event.getRepeatCount() == 0) {

     new AlertDialog.Builder(this)
                .setTitle("Title")
                .setMessage("Do you really want to Exit?")
                .setIcon(R.drawable.logo)
                .setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() {

                    public void onClick(DialogInterface dialog, int whichButton) {
                        finish();

                    }})
                .setNegativeButton(android.R.string.no, null).show();
 }

}

只要在 Activity class 中引发按键事件,就调用 onMyKeyDown 方法。示例:

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {

        //call fragment method onMyKeyDown(keyCode, event)

    return super.onKeyDown(keyCode, event);
}