2010-04-07 45 views
18

Tôi đang có hai hoạt động A và B. khi tôi nhấp vào nút trong A sẽ hiển thị B. khi tôi nhấp vào nút trong B nó quay lại A. tôi đã thiết lập phương thức overridePendingTransition sau phương thức finish(). nó hoạt động đúng. nhưng trong trường hợp Hoạt động hiện tại là B. vào thời điểm đó, tôi nhấp vào nút quay lại mặc định trong thiết bị. nó cho thấy quá trình chuyển đổi từ phải sang trái để hiển thị Hoạt động A.có trình nghe mặc định trên thiết bị (trong thiết bị) mặc định trong Android không?

Làm cách nào tôi có thể nghe phím Quay lại mặc định trên thiết bị?

EDIT:

Log.v(TAG, "back pressed"); 
finish(); 
overridePendingTransition(R.anim.slide_top_to_bottom, R.anim.hold); 

Trả lời

39
@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) { 
    if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) { 
     // do something on back. 
     return true; 
    } 

    return super.onKeyDown(keyCode, event); 
} 

Các liên kết sau đây là một lời giải thích chi tiết về làm thế nào để xử lý sự kiện trở lại chìa khóa, được viết bởi các nhà phát triển Android bản thân:

Using the back key

+0

không hoạt động .... i cant in a statement on logcat. – Praveen

+0

Bạn có thể chỉnh sửa câu hỏi của mình để hiển thị mã mà bạn đang gặp sự cố vào lúc này không? Một trong số chúng tôi có thể giúp đỡ –

+0

chỉ cần tôi sao chép và dán đoạn mã của bạn vào lớp hoạt động của tôi. chỉ cần thay thế // do somthing quay lại đoạn mã chỉnh sửa của tôi (xem câu hỏi). – Praveen

2
public boolean onKeyDown(int keyCode, KeyEvent event) { 
    if(keyCode == KeyEvent.KEYCODE_BACK){ 
     //Do stuff 
    } 

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

cho roid 2.0 và sau đó, có một phương pháp cụ thể trong lớp Hoạt động:

@Override 
public void onBackPressed() { 
    super.onBackPressed(); 
    // Do extra stuff here 
} 
+2

Đây là phương pháp ưa thích cho Android 2.x. Tuy nhiên, đối với các phiên bản trước của Android, bạn vẫn cần sử dụng 'onKeyDown()'. – CommonsWare

+0

không hoạt động .... tôi không thể in một câu lệnh trên bản thân logcat. tôi đã sử dụng cả hai phương pháp. – Praveen

0

tôi sử dụng mã này vào một hoạt động với một máy nghe nhạc phương tiện truyền thông. Tôi cần dừng phát lại khi người dùng nhấn nút quay lại nhưng vẫn có thể quay lại hoạt động trước đó.

@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) { 
    if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) { 
     // do something on back. 
     try{ 
      mp.stop(); //this line stops the player 
      return super.onKeyDown(keyCode, event);//this line does the rest 
     } 
     catch(IllegalStateException e){ 
      e.printStackTrace(); 
     } 
     return true; 
    } 

    return super.onKeyDown(keyCode, event); //handles other keys 
} 
Các vấn đề liên quan