2015-03-25 15 views
17

Tôi vừa phát triển ứng dụng xamarin.forms đầu tiên của mình. Tôi rất vui mừng về xamarin.forms, nhưng tôi nhớ một số sự kiện.Sự kiện vòng đời của trang trong xamarin.forms

Có bất kỳ sự kiện trang vòng đời nào trong một xamarin.forms ContentPage không?

tôi biết hai:

protected override void OnAppearing() 
{ 
} 

protected override void OnDisappearing() 
{ 
} 

Nhưng OnAppearing() sự kiện chỉ bắn một lần. Trên Android, khi tôi nhấn nút bắt đầu và quay lại ứng dụng của tôi, sự kiện này không kích hoạt lại.

Có cách giải quyết nào cho vấn đề này (như OnNavigatedTo trong các trang WindowsPhone) không?

Cảm ơn.

Trả lời

17

Vì vậy, sự kiện OnAppearing được kích hoạt khi trang của bạn xuất hiện. I E. bạn đã điều hướng đến trang đó hoặc quay lại trang đó từ trang khác trong Ngăn xếp. Có hiện không Page Lifecycle sự kiện như bạn có thể nhìn thấy từ API documentation

Tôi nghĩ rằng những gì bạn đang nói về là nếu bạn đặt ứng dụng của bạn vào giấc ngủ và điều hướng trở lại vào nó sự kiện OnAppearing không bị sa thải, Điều này là do trang của bạn hasn 't xuất hiện bởi vì nó đã có, ứng dụng đã được chỉ là ngủ.

gì bạn đang tìm kiếm là App Lifecycle trong đó bao gồm các phương pháp như:

protected override void OnStart() 
{ 
    Debug.WriteLine ("OnStart"); 
} 
protected override void OnSleep() 
{ 
    Debug.WriteLine ("OnSleep"); 
} 
protected override void OnResume() 
{ 
    Debug.WriteLine ("OnResume"); 
} 

Sau đó bạn có thể sử dụng các sự kiện OnResume để làm những gì bạn đang tìm kiếm.

Tài liệu Xamarin đó bao gồm các thay đổi phải được thực hiện cho các dự án Xamarin cũ để truy cập các sự kiện này. ví dụ. lớp học App trong thư viện được chia sẻ của bạn phải được kế thừa từ Xamarin.Forms.Application và các thay đổi cũng phải được thực hiện cho AppDelegateMainActivity.

+0

Tôi nghĩ có một số sự kiện khác mà tôi có thể sử dụng .. Nhưng bây giờ tôi có thể giải quyết vấn đề. Cảm ơn vì câu trả lời nhanh. – Joehl

6

Bạn cũng có thể sử dụng MessagingCenter Xamarin để thực hiện sự phối hợp tùy ý các sự kiện: http://developer.xamarin.com/guides/cross-platform/xamarin-forms/messaging-center/

Tôi đã thất vọng bởi điều tương tự: không có phù hợp xem các sự kiện chu kỳ cuộc sống trong Xamarin.Forms. Nhưng bạn có thể vượt qua một số hạn chế đó bằng cách sử dụng MessagingCenter, đây chỉ là một cơ sở tin nhắn/pub phụ đơn giản.

+0

Tôi đã sử dụng Bevore MessagingCenter nhưng tôi không bao giờ có ý tưởng để sử dụng nó cho mục đích này. Giải pháp tốt, cảm ơn bạn. – Joehl

+0

Tôi cũng đã gặp một chu kỳ sự kiện không phù hợp của Xamarin Android và UWP. Tôi đã có một trang tab đầu tiên sử dụng trang hiện tại của trang mẹ để kích hoạt sự kiện Xuất hiện của trang tab thứ hai. Trên Android, tab Đầu tiên luôn có thể kích hoạt sự kiện Xuất hiện, trên UWP, không phải lúc nào. Vấn đề không nhất quán được giải quyết bởi MessagingCenter. Cảm ơn bạn! –

3

Tính năng này phù hợp với tôi. Xamarin.Forms 2.0 trở lên. Bất cứ khi nào bạn quay lại trang CP này, sự kiện Appearing sẽ được kích hoạt.

public CP:ContentPage 
    { 
     //.... 
     public CP() 
     { 
      this.Appearing += CP_Appearing ; 
      //... 
     } 

     private void CP_Appearing(object sender, EventArgs e) 
     { 
      Debug.WriteLine("*************HALLO******WELCOME BACK."); 
     } 
    } 
Các vấn đề liên quan