如果未启用GPS(在Xamarin内),尝试打开GPS设置页面时出现以下错误:
未知标识符:StartActivity
未处理的例外:
显示java.lang.NullPointerException:
有人可以指导我哪里出错吗?
此我的界面
namespace MyApp
{
public interface GpsSettings
{
void showGpsSettings();
}
}
这是实施
[assembly: Xamarin.Forms.Dependency(typeof(GpsSettingsImplementation))]
namespace MyApp.Droid
{
public class GpsSettingsImplementation : Activity, GpsSettings
{
public GpsSettingsImplementation()
{
}
public void showGpsSettings()
{
var intent = new Intent(Android.Provider.Settings.ActionLocationSourceSettings);
StartActivity(intent);
}
}
}
这就是我点击按钮时调用我的功能的方法
DependencyService.Get<GpsSettings>().showGpsSettings();
答案 0 :(得分:0)
现有的Activity实例后面还有一些工作要做 它构建时的场景;活动开始于 意图系统(所有活动)将添加一个Context参考 当它们被实例化时它们。此上下文引用用于 StartActivity的调用链。
因此,调用后看到了Java.Lang.NullPointerException Test活动实例上的StartActivity是因为Context 在那个实例里面从未设置过。通过使用new运算符 创建一个你以正常方式规避的活动实例 活动被实例化,使您的实例无效 状态!
参考:https://stackoverflow.com/a/31330999/5145530
可以通过以下方式解决上述错误:
[assembly: Xamarin.Forms.Dependency(typeof(GpsSettingsImplementation))]
namespace MyApp.Droid
{
public class GpsSettingsImplementation : Activity, GpsSettings
{
public GpsSettingsImplementation()
{
}
public void showGpsSettings()
{
var intent = new Intent(Android.Provider.Settings.ActionLocationSourceSettings);
intent.SetFlags(ActivityFlags.NewTask);
Android.App.Application.Context.StartActivity(intent);
}
}
}