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.
Nguồn
2012-08-03 02:39:26
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
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
@art bạn có thể thử giải pháp của tôi: http://stackoverflow.com/a/20306670/878126 –