运行 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);
我将 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);