运行 Android Activity 来自 c# 代码(我将 Xamarin 与 Monogame 结合使用)

Run Android Activity from c# code(I use Xamarin with Monogame)

我将 Xamarin 与 Monogame 一起使用,我需要来自 c# 代码的 运行 android activity。我尝试这样做:

public class Test : Activity

{

public void Start()
{
  StartActivity(typeof(MyActivity));
}

}

}

然后从 Update() 我调用 Start()。

protected override void Update(GameTime gameTime)
{ 
   ...
   Test test = new Test();
   test.Start();
   ...
}

但是我有错误。 请帮助我

现有的 Activity 实例在构建时会在幕后进行一些工作;通过意图系统启动的活动(所有活动)将在实例化时添加一个 Context 引用。此上下文引用用于 StartActivity.

的调用链

因此,在您的 Test activity 实例上调用 StartActivity 后看到的 Java.Lang.NullPointerException 是因为该实例中的 Context 从未设置过。通过使用 new 运算符创建一个 activity 实例,您已经绕过了 正常 活动实例化方式,使您的实例处于无效状态!

这可以通过使用全局应用程序上下文来启动 activity:

var intent = new Intent(Android.App.Application.Context, typeof(Test));
intent.SetFlags(ActivityFlags.NewTask);
Android.App.Application.Context.StartActivity (intent);