【问题标题】:Modifier static is not valid for this item error in C#修饰符 static 对 C# 中的此项错误无效
【发布时间】:2016-11-01 13:09:12
【问题描述】:

我正在尝试在 Xamarin 表单中使用 Azure 的通知中心实现推送通知。目前我正在使用 GCM 为 Android 执行此操作,我关注 this link。但是在“向 droid 项目中添加推送通知”教程的第 5 步中,我收到了modifier static is not valid for this item 的错误。在这一步之后,这就是我的代码的样子:

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;
        }
    }
}

我是 C# 和 Xamarin 表单的新手,不知道哪里出错了。

【问题讨论】:

标签: c# android azure xamarin.android xamarin.forms


【解决方案1】:

问题是您试图在方法内部创建一个静态变量。如果您再看一下该链接中的示例,您会注意到该变量在方法之外。

【讨论】:

  • 如果我想在方法中创建一个静态变量,有什么建议吗?
【解决方案2】:

你需要在函数之外声明静态变量。

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

然后只需将instance = this; 放入OnCreate

【讨论】:

  • 在 OnCreate 方法之外声明静态变量消除了错误。但是我在以下方法的末尾得到了一个括号'}':catch (Exception e) { CreateAndShowDialog(e.Message, "Error"); }
  • private void CreateAndShowDialog(String message, String title) 行之前,您需要一个右括号} 来关闭OnCreate 方法。
  • 是的,非常感谢。这有帮助。我被困在这个问题上一段时间了。谢谢,很高兴!
猜你喜欢
  • 2019-08-04
  • 2011-07-30
  • 1970-01-01
  • 1970-01-01
  • 2013-04-12
  • 1970-01-01
  • 2012-07-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多