如何为后退键设置新的侦听器?

时间:2013-02-21 19:17:04

标签: java android eclipse keyboard

我希望当用户按下Android键盘上的后退按钮时,活动将关闭(并显示预览活动),然后我希望应用程序执行其他操作。
当我试图通过这里的说明: is there a default back key(on device) listener in android?当我按下后退按钮时,活动将关闭并再次打开。当我再次按下后退按钮时,活动关闭,预览活动开始 谁知道为什么?有没有人对此有另一个想法?

这是我试过的一些代码: 方案一:

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if(keyCode == KeyEvent.KEYCODE_BACK){
        //Show the dialog and get the response
        ArrayList<User> lstChosenContacts = new ArrayList<User>();
        for(int i = 0; i < this.lstContacts.size(); i++) {
            if(this.lstContacts.get(i).getIsChecked()) {
                lstChosenContacts.add(this.lstContacts.get(i).getUserContact());
            }
        }
        Intent data = new Intent();
        data.putExtra("lstChosenContacts", lstChosenContacts);
     setResult(RESULT_OK,data);

    }
    return super.onKeyDown(keyCode, event);
}

选项2:

@Override
public void onBackPressed() {
    ArrayList<User> lstChosenContacts = new ArrayList<User>();
    for(int i = 0; i < this.lstContacts.size(); i++) {
        if(this.lstContacts.get(i).getIsChecked()) {
            lstChosenContacts.add(this.lstContacts.get(i).getUserContact());
        }
    }
    Intent data = new Intent();
    data.putExtra("lstChosenContacts", lstChosenContacts);
     setResult(RESULT_OK,data);
    super.onBackPressed();
}

谢谢!

1 个答案:

答案 0 :(得分:0)

试试这个:

public boolean dispatchKeyEvent(KeyEvent event) {
            int action = event.getAction();
            int keyCode = event.getKeyCode();

            switch (keyCode) {
            case KeyEvent.KEYCODE_BACK:
                if (action == KeyEvent.ACTION_DOWN ){ 
            //Do something in the back button       
            Log.d("BackButton","back");
                }
                return true;
            default:
                return super.dispatchKeyEvent(event);
              }
          }