2013-02-21 59 views
2

我希望當用戶按下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(); 
} 

謝謝!

+0

如果你能證明你的一些代碼,這將有助於 – 2013-02-21 19:22:28

回答

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); 
       } 
      } 
+0

我應該在哪裏把我的額外代碼,後退按鈕點擊? – 2013-02-21 20:07:28

+0

檢查編輯。 – 2013-02-21 20:21:10

+0

我應該重寫這個函數嗎?爲什麼TAG變量發生錯誤? – 2013-02-21 20:36:53