我使用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();
...
}
但我有错误。 请帮帮我
答案 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);