2

我希望当用户按下 android 键盘上的后退按钮时,活动将关闭(并显示预览活动),除此之外,我希望应用程序做另一件事。
当我尝试按照此处的说明进行操作时: 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();
}

谢谢!

4

1 回答 1

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);
              }
          }
于 2013-02-21T19:51:38.163 回答