2016-06-29 4 views
0

Ich versuche, Push-Benachrichtigungen mit Azure Notifications Hub in Xamarin Formen zu implementieren. Derzeit mache ich das für Android, mit GCM und ich folge this link. Aber in Schritt 5 des Tutorials in "Hinzufügen von Push-Benachrichtigungen zum Droid-Projekt" bekomme ich den Fehler modifier static is not valid for this item. Nach diesem Schritt ist es das, was mein Code wie folgt aussieht:Modifikator statisch ist nicht gültig für diesen Artikel Fehler in C#

protected override void OnCreate (Bundle bundle) 
    { 
     base.OnCreate (bundle); 

     // Create a new instance field for this activity. 
     static MainActivity instance = null; 
     // Set the current instance of MainActivity. 
     instance = this; 

     global::Xamarin.Forms.Forms.Init (this, bundle); 
     Microsoft.WindowsAzure.MobileServices.CurrentPlatform.Init(); 
     LoadApplication (new App()); 
     try 
     { 
      // Check to ensure everything's setup right 
      GcmClient.CheckDevice(this); 
      GcmClient.CheckManifest(this); 

      // Register for push notifications 
      System.Diagnostics.Debug.WriteLine("Registering..."); 
      GcmClient.Register(this, PushHandlerBroadcastReceiver.SENDER_IDS); 
     } 
     catch (Java.Net.MalformedURLException) 
     { 
      CreateAndShowDialog("There was an error creating the Mobile Service. Verify the URL", "Error"); 
     } 
     catch (Exception e) 
     { 
      CreateAndShowDialog(e.Message, "Error"); 
     } 
     private void CreateAndShowDialog(String message, String title) 
    { 
     AlertDialog.Builder builder = new AlertDialog.Builder(this); 

     builder.SetMessage(message); 
     builder.SetTitle(title); 
     builder.Create().Show(); 
    } 
    // Return the current activity instance. 
    public static MainActivity CurrentActivity 
    { 
     get 
     { 
      return instance; 
     } 
    } 
} 

Ich bin neu in C# und Xamarin Formen, und nicht heraus kann, wo ich falsch werde.

+0

bitte lernen grundlegende C# -Syntax ... es scheint wie kompilieren Zeit Fehler (was bedeutet, dass Sie C# Grundlagen nicht wissen) und es genau sagt Ihnen, was ist falsch und in welcher Zeile ... – Selvin

+1

Mögliche Duplikat von [Does C# unterstützt die Verwendung von statischen lokalen Variablen?] (Http://stackoverflow.com/questions/2393156/does-c-sharp-support-the-use-of-static-local-variables) – Selvin

Antwort

2

Sie müssen die statische Variable außerhalb der Funktion deklarieren.

private static MainActivity instance = null; 
// Return the current activity instance. 
public static MainActivity CurrentActivity 
{ 
    get 
    { 
     return instance; 
    } 
} 

Und dann einfach instance = this; innen OnCreate.

+0

Deklarieren der statischen Variablen außerhalb von Die OnCreate-Methode hat den Fehler behoben. Aber dann bekomme ich eine Klammer '}' erwartet am Ende der folgenden Methode: catch (Exception e) { CreateAndShowDialog (e.Message, "Fehler"); } – frank

+0

Es sieht so aus, als ob vor der Zeile 'private void CreateAndShowDialog (String message, String title)' 'eine schließende Klammer'} 'benötigt wird, um die' OnCreate' Methode zu schließen. – tsandy

+1

Ja, vielen Dank. Das hat geholfen. Ich steckte schon eine Weile hier drin. Danke, große Zeit! – frank

0

Das Problem besteht darin, dass Sie versuchen, eine statische Variable innerhalb einer Methode zu erstellen. Wenn Sie sich das Beispiel in diesem Link noch einmal ansehen, werden Sie feststellen, dass die Variable außerhalb der Methode liegt.

Verwandte Themen