Xamarin.forms 获取当前活动Xamarin表单
我使用用于条形码阅读器的Leadtools SDK,当我尝试获取当前活动时,它会给我空值 这是我的密码Xamarin.forms 获取当前活动Xamarin表单,xamarin.forms,xamarin.android,leadtools-sdk,Xamarin.forms,Xamarin.android,Leadtools Sdk,我使用用于条形码阅读器的Leadtools SDK,当我尝试获取当前活动时,它会给我空值 这是我的密码 Stream resourceStream = new MemoryStream(); // Droid.MainActivity activity = Forms.Context as Droid.MainActivity; var activity = Android.App.Application.Context as Activity;
Stream resourceStream = new MemoryStream();
// Droid.MainActivity activity = Forms.Context as Droid.MainActivity;
var activity = Android.App.Application.Context as Activity;
int resId = activity.Resources.GetIdentifier("Datamatrix", "drawable", "com.companyname.UDOSE");
resourceStream = activity.Resources.OpenRawResource(resId);
var leadStream = LeadStream.Factory.FromStream(resourceStream);
await ReadBarcode(leadStream);
活动始终为空,如何解决此问题?1.在MainActivity中定义全局静态活动:
public static MainActivity Instance;
protected override void OnCreate(Bundle savedInstanceState)
{
TabLayoutResource = Resource.Layout.Tabbar;
ToolbarResource = Resource.Layout.Toolbar;
base.OnCreate(savedInstanceState);
global::Xamarin.Forms.Forms.Init(this, savedInstanceState);
Instance = this;
LoadApplication(new App());
}
当您使用callMainActivity.Instance
2.使用当前活动插件,您可以参考
3.我建议您使用调用Droid项目中定义的方法,如:
在sharecode中创建接口:
public interface IRead
{
void Read();
}
然后在Droid项目中创建一个类:
[assembly: Dependency(typeof(AndroidRead))]
namespace Demo.Droid
{
class AndroidRead:IRead
{
public async void Read()
{
//here is your codes
Stream resourceStream = new MemoryStream();
// Droid.MainActivity activity = Forms.Context as Droid.MainActivity;
var activity = MainActivity.Instance;
int resId = activity.Resources.GetIdentifier("Datamatrix", "drawable", "com.companyname.UDOSE");
resourceStream = activity.Resources.OpenRawResource(resId);
var leadStream = LeadStream.Factory.FromStream(resourceStream);
await ReadBarcode(leadStream);
}
}
}
并调用page.xmal.cs,如
DependencyService.Get().Read()代码>在LEADTOOLS版本20附带的Xamarin条形码演示中,该活动在MainPage.xaml.cs中获得,如下所示:
...
#elif __ANDROID__
Stream resourceStream = new MemoryStream();
var activity = Droid.MainActivity.Instance;
...
请使用演示进行测试,并在您这边尝试此代码,看看它是否正常工作
请记住,电子邮件支持和在线聊天支持服务都是免费的,因此,如果您对我们的SDK或演示有任何疑问,请随时发送至support@leadtools.comCurrentActivity不能在共享项目中调用,因为它与.net标准不兼容。我想在您的情况下,您应该使用调用共享代码中的条形码阅读器方法,该方法将在Droid中定义。您能给我一个在我的情况下使用dependecyservice的示例吗?@AmrKamal以上是用法,您可以参考,根据您的具体需要修改谢谢,但仍然有问题,Droid缺少什么名称空间?您是否在不做任何更改的情况下构建并运行了我们的演示?请将您所做工作的详细信息发送到我们的支持电子邮件地址,我们将与您核对。我认为您的示例不适用于.net标准,它仅适用于共享项目仍然无法…现在可以工作吗?
...
#elif __ANDROID__
Stream resourceStream = new MemoryStream();
var activity = Droid.MainActivity.Instance;
...