19

Tôi đang làm việc để làm cho ứng dụng trở nên Chất liệu hơn và tôi chỉ bị mắc kẹt về cách triển khai một số chuyển đổi phần tử được chia sẻ. Tôi có một hoạt động A bắt đầu một B khác và sau đó gọi kết thúc() để xóa nó khỏi ngăn xếp lại. Trong trường hợp của tôi, tôi có một yếu tố tôi muốn chia sẻ giữa hai hoạt động, nhưng một khi nó được chuyển từ A sang B, A không còn là vấn đề nữa. Nếu tôi không gọi kết thúc() sau startActivity (ctx, intent, bundle) hoạt ảnh thoát/nhập hoạt động hoàn hảo. Tuy nhiên, nếu tôi gọi kết thúc, có một nhấp nháy thực sự xấu xí trước khi hoạt ảnh bắt đầu.Android - Chuyển đổi phần tử được chia sẻ với kết thúc hoạt động gọi điện()

Có điều gì tôi đang xem hoặc chỉ là không thể làm những gì tôi đang cố gắng làm?

Trả lời

16

Bạn có thể kết thúc hoạt động của bạn trong hàm onStop, nếu bạn chỉ muốn điều này xảy ra khi bạn chuyển từ A đến B sau đó tạo ra một lá cờ và đặt nó sau khi bạn gọi startActivity (ctx, ý định, bó):

@Override 
public void onStop() { 
    super.onStop(); 
    if(mShouldFinish) 
     finish(); 
} 

Hãy chắc chắn rằng khi bạn đang thực hiện với hoạt động B để gọi kết thúc() và không finishAfterTranstion() kể từ khi hoạt động A là không còn ở đó

Sau khi kết thúc hoạt động A, yếu tố được chia sẻ trong B có thể treo trong màn hình nếu bạn nhấn lại. Đặt transitionName thành null trong ActivityB.onEnterAnimationComplete để tránh điều này.

+0

Điều này không hiệu quả đối với tôi, quá trình chuyển đổi phần tử được chia sẻ không chính xác khi tôi thực hiện việc này. Mọi thứ đều ổn nếu tôi không kết thúc Hoạt động A nhưng tôi muốn làm như vậy sau khi quá trình chuyển đổi kết thúc. Không thể làm việc này được. –

18

CẬP NHẬT

Tốt hơn nhiều và cách đơn giản hơn

ActivityCompat. finishAfterTransition(this); 

< 3 thư viện hỗ trợ.

+2

Tôi không thể tìm thấy 'finishWithTransition'. Vì vậy, tôi đã thử 'finishAfterTransition' và không hoạt động. – guness

+0

Thư viện hỗ trợ của nó. Ngoài ra, hãy thử chạm vào phiên bản targetSDK của bạn – ksarmalkar

+0

Cuộc gọi thực sự là: ActivityCompat.finishAfterTransition (this); Chỉ cần kiểm tra và hoạt động tốt. –

2

Thử phương thức finishAfterTransition() ở 5.0 trở lên bạn có thể hoàn thành hoạt động sau khi chuyển đổi thoát xuất hiện.

2

Điều này có thể là muộn nhưng tôi có cùng một vấn đề. Điều gì đã hiệu quả đối với tôi là:

supportFinishAfterTransition(); 

Điều này được bao gồm trong thư viện hỗ trợ và hoạt động như sự quyến rũ.

PS: bạn không cần phải gọi finish() khi bạn gọi supportFinishAfterTransition().

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