从c#代码运行Android Activity(我使用Xamarin和Monogame)

时间:2015-07-09 14:46:11

标签: c# android android-activity xamarin monogame

我使用Xamarin和Monogame,我需要从c#代码运行android活动。我试着这样做:

public class Test : Activity

{

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

}

}

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

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

但我有错误。 请帮帮我

1 个答案:

答案 0 :(得分:3)

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

的调用链

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

可以使用全局应用程序上下文来启动活动:

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