【问题标题】:Does not implement interface member StartActivityInAndroid未实现接口成员 StartActivityInAndroid
【发布时间】:2019-10-15 17:43:53
【问题描述】:

我试图通过依赖在 MainPage 中打开一个活动,但出现以下错误:

你能帮帮我吗?谢谢

【问题讨论】:

  • 错误信息是不言自明的。您正在实现一个接口,根据定义,它是一个合同。合同规定您必须有一个名为StartActivityInAndroid 的方法,该方法不返回任何内容且不接受任何参数。也许您需要阅读一般的接口:docs.microsoft.com/en-us/dotnet/csharp/programming-guide/…
  • 请不要将代码或错误作为图片发布!
  • 是的,但是你在课堂上没有这个方法,这是VS告诉你的。
  • 您的 NativePages 课程中似乎有错字。你有public void StartAc() 的地方应该是public void StartActivityInAndroid()。纠正它,你的错误就会消失。

标签: c# xamarin.forms


【解决方案1】:

C# 接口基本上是一个契约——如果你的类实现了一个接口,你就是说你会做接口需要的所有事情。

在这种情况下,您的类正在实现INativePages,它定义了一个方法StartActivityAndroid。因此,您的类必须提供该方法签名的实现。

如果你点击“显示潜在修复”链接,VS 会自动为你创建一个方法存根。

【讨论】:

    【解决方案2】:

    让我们举个例子。假设我是一个机器人,我可以射击我周围的人。但是,问题是我没有枪。我也不明白枪的工作原理。但我知道枪是一种带有扳机的物体,按下时会杀死人。因此,此代码将如下所示:-

    public class Robot{
    
        public void ShootPeopleWith( weapon IWeapon ){
            weapon.PressTrigger()
        }
    }
    
    interface IWeapon{
       PressTrigger()
    }
    

    您会看到,机器人希望任何想要它射人的人首先为他提供武器。现在,他不知道是什么武器。无论你提供给我什么,它都应该有一个触发器,因为我只知道按下触发器并且我知道它符合我的目的。如果你给我提供没有触发器的东西,我就无法工作。

    现在,出现了一种无人机,它可以指示机器人射击人。它还为它提供了一把枪。

    public class Drone{
        List<Robots> allRobotsInArea = someList
    
        public void DelegateARobot(){
            robot = select a robot from allRobotsInArea
            IWeapon weapon = new MachineGun();    //procuring a machine gun
            robot.ShootPeopleWith(weapon);
        }
    
    }
    

    您可以在此处看到 IWeapon 是机器人和无人机之间的协议。它说无论你给我什么,都必须有一个触发器。所以,机枪必须有扳机。让我们实现一些武器:-

    public class MachineGun : IWeapon{
        public void PressTrigger(){
            Fire40RoundsPerSecond();
        }
        ...
    }
    
    public class Sniper() : IWeapon{
        public void PressTrigger(){
            SayQuackQauck();
        }
    }
    

    无人机现在可以轻松地将狙击手和机关枪等任何武器传递给机器人。

    public class Pumpkin{
        public void FreakPeopleOut(){
            GlowInTheDark();
        }
    }
    

    无人机无法通过南瓜,即使它可以用作robot.ShootPeopleWith(new Pumpkin()); 的武器,因为它没有触发器并且违反了机器人期望的合同。

    在您的情况下,Android 操作系统可能是上述故事中的机器人,它需要任何类型的 INativePages,因此当它使用您的 NativePages 对象时,它将尝试调用 StartActivityInAndroid()。它不知道活动或如何启动它,因此您必须在方法中指定它。在 Windows 中按 Alt + Enter 将自动为您生成此方法。然后,您必须编写有关如何在 Android 中启动 Activity 的逻辑。

    【讨论】:

      猜你喜欢
      • 2013-12-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多