2017-02-07 2 views
1

Hallo Ich erstelle eine App in Xamarin Formen mit PCL-Projekt. Ich möchte Toast-Benachrichtigung auf zweimal drücken drücken Sie nur für Android und iOS. Für Android habe ich versucht -Xamarin Formen: Toast Benachrichtigung in Android & IOS

long doublePressInterval_ms = 300; 
DateTime lastPressTime = DateTime.MinValue; 
DateTime pressTime = DateTime.Now; 

     if ((pressTime - lastPressTime).TotalMilliseconds <= doublePressInterval_ms) 
     { 
      if(Device.OS == TargetPlatform.Android) 
      { 

       Java.Lang.JavaSystem.Exit(0); 
      } 
     } 
     else 
     { 

      Android.Widget.Toast.MakeText(this, string_name, ToastLength.Long).Show(); 
     } 
     lastPressTime = pressTime; 
     return false; 

Aber es zeigt Fehler Kann Seite nicht in Android Context konvertieren. Wie kann ich einen adnroid-Kontext in meinem PCL-Projekt bekommen?

Ich versuchte Toast Notification Plugin for Xamarin, aber es sagt. NET-Version ist nicht kompatibel.

enter image description here

+2

Mögliche Duplikat [Xamarin.forms zu erreichen Get Android Context] (http://stackoverflow.com/questions/33674882/xamarin-forms-get-android-context) – SushiHangover

+0

@SushiHangover Ich habe versucht alle Lösungen zur Verfügung gestellt. Aber keine Lösung hat funktioniert. – Sonali

+0

'Toast.MakeText (Xamarin.Forms.Forms.Context ;, Stringname, ToastLength.Long).Show(); ' – SushiHangover

Antwort

0

Sie auf Toast Notifications for Xamarin Forms beziehen, und hier ist die sample code.

Im Grunde verwendet es DependencyService, um ToastNotification auf jeder Plattform zu implementieren, während jede Plattform eine eigene Implementierung für das Toasten einer Benachrichtigung hat.

Sie können der Anleitung folgen, um die Arbeit abzuschließen, das einzige Problem, das ich mit diesem Handbuch getroffen habe, ist die Installation dieses Toasts.Forms.Plugin. Es ist möglich, dass Sie diese Ausnahme bei der Installation dieses Pakets auf PCL möglicherweise erfüllen:

Das Paket 'Toasts.Forms.Plugin 3.1.2' konnte nicht installiert werden. Sie versuchen, dieses Paket in einem Projekt zu installieren, das auf .NET Portable, Version = v4.5, Profile = Profile259 'abzielt. Das Paket enthält jedoch keine Assemblyverweise oder Inhaltsdateien, die mit diesem Framework kompatibel sind.

Um dieses Problem zu lösen, können Sie direkt den PCL klicken und „Unload-Projekt“, dann wieder rechts auf PCL klicken und „Bearbeiten NAMESPACE.proj“, ersetzen Sie wählen den Code <TargetFrameworkProfile>Profile259</TargetFrameworkProfile> mit <TargetFrameworkProfile>Profile111</TargetFrameworkProfile>, diese Datei speichern und laden dieses Projekt. Nach dem Ändern dieses TargetFrameworkProfile kann dieses Plugin erfolgreich auf PCL installiert werden.

0

Ich habe die Dokumentation für die Toast-Benachrichtigung im Xamarin.Forms (Portable) -Projekt erstellt. Allerdings habe ich nicht die Zeit, um an der iPhone-Anwendung zu arbeiten (ehrlich gesagt kann ich nicht Ereignis in iPhone eingecheckt werden, da ich keinen Mac habe;)), aber Sie können es für die Android-Anwendung verwenden.

Es verwendet die eingebaute Funktion und Sie müssen kein externes Plugin dafür herunterladen.

-Link: https://docs.google.com/document/d/1C9mrsxvww3RIrm_BrtDWfKZrp6cAvZVqevewznIUHwI/edit?usp=sharing

Beispielcode: https://github.com/imchandresh/ToastMessage/tree/master

danken Ihnen.

2

In Xamarin Android Sie wie gewohnt wie

Toast.MakeText(this,"toast message", ToastLength.Long).Show(); 

In Xamarin iOS zeigen können, müssen Sie kundenspezifische UIView mit Animation verwenden, um den gleichen Effekt

public void ShowToast(String message, UIView view) 
{ 
    UIView residualView = view.ViewWithTag(1989); 
    if (residualView != null) 
     residualView.RemoveFromSuperview(); 

    var viewBack = new UIView(new CoreGraphics.CGRect(83, 0, 300, 100)); 
    viewBack.BackgroundColor = UIColor.Black; 
    viewBack.Tag = 1989; 
    UILabel lblMsg = new UILabel(new CoreGraphics.CGRect(0, 20, 300, 60)); 
    lblMsg.Lines = 2; 
    lblMsg.Text = message; 
    lblMsg.TextColor = UIColor.White; 
    lblMsg.TextAlignment = UITextAlignment.Center; 
    viewBack.Center = view.Center; 
    viewBack.AddSubview(lblMsg); 
    view.AddSubview(viewBack); 
    roundtheCorner(viewBack); 
    UIView.BeginAnimations("Toast"); 
    UIView.SetAnimationDuration(3.0f); 
    viewBack.Alpha = 0.0f; 
    UIView.CommitAnimations(); 
} 
Verwandte Themen