2012-05-25 29 views
12

Tôi muốn triển khai Navigation Pattern trong ứng dụng của mình bằng nút Lên trên trong ActionBar.Nút ActionBar Up và Mẫu điều hướng

Tôi có Hoạt động chi tiết, ở đây tôi có thể đến từ nhà, mục yêu thích và màn hình tìm kiếm. Ngoài ra tôi có thể mở màn hình này từ trình duyệt (xử lý url cụ thể). Khi người dùng nhấn nút Up, tôi sử dụng phương thức flush() để mô phỏng điều hướng quay lại. Nhưng đối với trường hợp, khi người dùng đến từ trình duyệt, tôi muốn mở màn hình chính thay vì hoạt động của trình duyệt trước đó. Làm thế nào tôi có thể nhận ra, hoạt động trước đó là từ một ứng dụng khác và điều hướng đến màn hình chính?

Trả lời

20

Up Luôn luôn nên điều hướng đến cha mẹ phân cấp của hoạt động và Quay lại phải luôn điều hướng theo thời gian.

Nói cách khác, bạn nên để lại Quay lại.

Đối với Up, nó phải luôn luôn đi đến cùng một vị trí bất kể nó đến từ đâu. Vì vậy, nếu bạn thường đến DetailsActivity từ YourListActivity, Up luôn luôn nên đến đó bất kể bạn đến từ đâu. Nơi có nhiều khả năng nhất tùy theo quyết định của bạn, nhưng nó luôn luôn giống nhau.

Nếu bạn đến Hoạt động chi tiết từ một vị trí không bình thường (chẳng hạn như trình duyệt, hoạt động, tiện ích hoặc thông báo khác), bạn nên tạo lại ngăn xếp nhiệm vụ để điều hướng sử dụng kết quả trong cùng một đường dẫn. Dưới đây là một ví dụ từ đào tạo cho nhà phát triển Android:

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    switch (item.getItemId()) { 
    case android.R.id.home: 
     Intent upIntent = new Intent(this, YourListActivity.class); 
     if (NavUtils.shouldUpRecreateTask(this, upIntent)) { 
      // This activity is not part of the application's task, so 
      // create a new task 
      // with a synthesized back stack. 
      TaskStackBuilder 
        .from(this) 
        .addNextIntent(new Intent(this, HomeActivity.class)) 
        .addNextIntent(upIntent).startActivities(); 
      finish(); 
     } else { 
      // This activity is part of the application's task, so simply 
      // navigate up to the hierarchical parent activity. 
      NavUtils.navigateUpTo(this, upIntent); 
     } 
     return true; 
    } 
} 

Đây là Đào tạo Android trên thực hiện Navigation

(http://developer.android.com/training/implementing-navigation/index.html).

Bạn sẽ cần thư viện hỗ trợ cho NavUtils và TaskStackBuilder.

+8

Khi sử dụng phương pháp này, hoạt động gốc sẽ mất tất cả các tính năng bổ sung và trạng thái. Bạn có anyway để khôi phục lại nó nhà nước? – sarunw

+2

theo nguyên tắc (http://developer.android.com/design/patterns/navigation.html), quay lại không được điều hướng tạm thời khi thông báo đặt bạn sâu vào ứng dụng. Xem ví dụ về gmail hoặc lịch. – Maragues

+0

@art bạn có thể thử giải pháp của tôi: http://stackoverflow.com/a/20306670/878126 –

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