2013-07-29 29 views
7

Tôi chỉ mới bắt đầu với Android và tôi làm theo hướng dẫn này về cách thêm Điều hướng lên vào Hoạt động trên Thanh tác vụ.Android: chuyển đổi sai khi sử dụng navigationUpFromSameTask()

http://developer.android.com/training/implementing-navigation/ancestral.html

Tuy nhiên, quá trình chuyển đổi khi tôi sử dụng nút lên từ Thanh tác vụ làm cho nó hiển thị như quá trình chuyển đổi fade-in mở một hoạt động mới chứ không phải là fade-out rằng nó nên được, như nó xảy ra khi nhấn nút quay lại ở phía dưới.

Tôi có thể làm gì để hiển thị chuyển đổi chính xác? Cảm ơn.

Trả lời

0

Tôi đã thay đổi thành kết thúc(); và điều này dường như làm những gì tôi muốn.

+5

có, nhưng đó là không đúng, hãy kiểm tra trình bày này đây tại sao nó không được khuyến khích để làm điều đó: https://speakerdeck.com/jgilfelt/this-way-up-implementing -effective-navigation-on-android – Ciprian

-1

bạn có thể sử dụng phương pháp overridePendingTransition():

Gọi ngay sau khi một trong những hương vị của startActivity (Ý định) hoặc kết thúc() để chỉ định một hình ảnh động chuyển tiếp rõ ràng để thực hiện tiếp theo.

http://developer.android.com/reference/android/app/Activity.html#overridePendingTransition(int, int)

+0

tính năng này không hoạt động cho NavUtils điều hướngUpFromSameTask()/navigationUpTo() – SjoerdvGestel

+0

kiểm tra mã nguồn, nó sẽ hoạt động ;-) http://grepcode.com/file/repo1.maven.org/ maven2/com.google.android/support-v4/r7/android/support/v4/app/NavUtils.java – Cliffus

13

Khai android:launchMode="singleTop" bên manifest.xml của bạn cho hoạt động cha mẹ của bạn.

Việc chuyển đổi sau đó sẽ chuyển sang mặc định mờ dần khi gọi một cái gì đó như:

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    switch (item.getItemId()) { 
    // Respond to the action bar's Up/Home button 
    case android.R.id.home: 
     NavUtils.navigateUpFromSameTask(this); 
     return true; 
    } 
    return super.onOptionsItemSelected(item); 
} 

(từ: http://developer.android.com/training/implementing-navigation/ancestral.html#NavigateUp)

+0

Khi có chuyển đổi tùy chỉnh giữa phụ huynh và hoạt động hiện tại, bao gồm phần tử được chia sẻ, cách duy nhất tôi có thể để đảo ngược quá trình chuyển đổi đó bằng cách gọi trực tiếp 'finishAfterTransition'. Không có cuộc gọi nào đến phương thức 'NavUtils' sẽ thực hiện công việc, ngay cả khi tôi override' finish' trong hoạt động hiện tại để gọi 'finishAfterTransition'. Có ai biết tại sao không? Tôi sắp tìm kiếm/đăng câu hỏi của riêng tôi về chủ đề này. – user3175580

8

Bạn nên sử dụng phương pháp navigateUpTo() và đặt cờ không có hình ảnh động cho ý định, như sau:

final Intent intent = NavUtils.getParentActivityIntent(this); 
intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION); 
NavUtils.navigateUpTo(this, intent); 

Bạn sẽ có hoạt ảnh 'đẹp' trở lại và sử dụng đúng nút Lên. this là hoạt động hiện tại.

1

Giải pháp của @ Ciprian phù hợp với tôi.

Ngoài ra, navigateUpFromSameTask() chỉ là một tiện phương pháp tương đương với cách gọi:

final Intent intent = NavUtils.getParentActivityIntent(this); 
NavUtils.navigateUpTo(this, intent); 

Khi bạn thêm Intent.FLAG_ACTIVITY_NO_ANIMATION cờ, hoạt động defaut mờ dần transation có hiệu lực.

1

tôi phải vật lộn rất nhiều cho cùng một vấn đề này và cố gắng giải quyết nó như sau:

 case android.R.id.home: 
      onBackPressed(); 
      return true; 

Bất cứ khi nào bạn nhấn nút quay lại onBackPressed() được gọi là quá. Gọi nó khi nhấn nút thanh hành động sẽ chỉ làm điều tương tự.

0

Điều này có thể gây nhầm lẫn như đối với tôi. Tuy nhiên, giải pháp của tôi chỉ đơn giản là thêm android:launchMode="singleTop" vào tất cả của cha mẹ bất kể cha mẹ có cha mẹ khác.

Hy vọng nó sẽ giúp :)