2011-06-27 30 views
5

Trong ứng dụng của tôi, tôi muốn kiểm soát phần cứng back button. Điều đó có nghĩa là trong ứng dụng của tôi có bốn hoặc năm hoạt động. Bây giờ giả sử tôi chuyển từ hoạt động này sang hoạt động khác.Cách kiểm soát nút quay lại phần cứng

Bây giờ trong trường hợp của mình khi tôi nhấn nút quay lại phần cứng, tôi muốn ứng dụng của tôi thoát khỏi bất kỳ hoạt động nào mà tôi đang sử dụng. hoạt động đầu tiên ... vì vậy câu hỏi của tôi là tôi nên làm gì để khi tôi nhấn nút quay lại phần cứng, nó sẽ thoát khỏi ứng dụng của tôi ... vui lòng đề nghị tôi.

+2

Ow, và tôi nghĩ rằng cách gõ "trở lại" và "android" ở đây trên stackoverflow sẽ cung cấp cho bạn rất nhiều hit tương tự .... – Nanne

+0

Wow- làm thế nào để bạn nhận được những loại câu trả lời này cho câu hỏi của bạn và thậm chí không chấp nhận câu trả lời? – IcedDante

Trả lời

15

Hãy thử điều này:

@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) 
{ 
    if(keyCode == KeyEvent.KEYCODE_BACK) 
    { 
     Intent intent = new Intent(Intent.ACTION_MAIN); 
     intent.addCategory(Intent.CATEGORY_HOME); 
     intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
     startActivity(intent); 
     return true; 
    } 
return false; 
} 
+0

nhưng nơi tôi viết mã này có nghĩa là có năm hoạt động trong ứng dụng của tôi, trong đó hoạt động tôi viết mã này..vì vậy trong trường hợp mã này được thực thi – AndroidDev

+1

@Anshuman, đây là những gì bạn muốn ngay tại đây. Bạn sẽ phải kiểm tra nó trong bất kỳ hoạt động hiển thị nào, và nó sẽ thực thi trong Activity đó. Sau đó, nếu bạn sử dụng, nó sẽ bắt đầu hoạt động mới. –

4

Bạn sẽ phải lưu trữ các trường hợp của tất cả 5 hoạt động trong một lớp học phổ biến, và thêm một onBackPressed() trong mọi hoạt động, mà sẽ gọi một phương thức trong lớp thông thường mà sẽ gọi activity.finish() trên mỗi trong số 5 Hoạt động.

Ví dụ:

class Activity1 extends Activity { 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     MyController.getInstance().setActivity1(this); 
    } 

    public void onBackPressed() { 
     MyController.getInstance().closeAllActivities(); 
     super.onBackPressed(); 
    } 
} 

Tương tự như vậy, hãy viết cho Activity2, Activity3, và vân vân. Và, lớp MyController sẽ trông như thế này:

class MyController { 
    private static MyController instance; 
    private Activity activity1, activity2, activity3, activity4, activity5; 

    private MyController() {} 
    public static synchronized MyController getInstance() { 
     if(instance == null) { 
      instance = new MyController; 
     } 

     return instance; 
    } 

    public void setActivity1(Activity activityObject) { activity1 = activityObject; } 
    public void setActivity2(Activity activityObject) { activity2 = activityObject; } 
    public void setActivity3(Activity activityObject) { activity3 = activityObject; } 
    public void setActivity4(Activity activityObject) { activity4 = activityObject; } 
    public void setActivity5(Activity activityObject) { activity5 = activityObject; } 

    public void closeAllActivities() { 
     if(activity1 != null) { 
      activity1.finish(); 
     } 
     if(activity2 != null) { 
      activity2.finish(); 
     } 
     if(activity3 != null) { 
      activity3.finish(); 
     } 
     if(activity4 != null) { 
      activity4.finish(); 
     } 
     if(activity5 != null) { 
      activity5.finish(); 
     } 
    } 
} 
+0

Bạn có thể vui lòng chỉ cho tôi các ví dụ..i mới trong android..và tôi không biết cách thể hiện tất cả 5 hoạt động trong một lớp học chung – AndroidDev

+0

Tôi sẽ cập nhật câu trả lời của mình với điều này. – sparkymat

+0

OK SparkYmat..i sẽ làm việc trên đó..thanks cho đề xuất của bạn .. – AndroidDev

Các vấn đề liên quan