获取当前活动 Xamarin 表单

2024-02-06

我使用 Leadtools SDK 进行条码阅读器,当我尝试获取当前活动时,它给我 null

这是我的代码

   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.定义一个全局静态Activity,在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());
    }

当你使用通话时MainActivity.Instance

2.使用当前活动插件,你可以参考当前活动 https://github.com/jamesmontemagno/CurrentActivityPlugin

var activity = CrossCurrentActivity.Current.Activity;

3.我建议你使用依赖服务 https://learn.microsoft.com/en-us/xamarin/xamarin-forms/app-fundamentals/dependency-service/introduction调用Droid项目中定义的方法,例如:

在共享代码中创建一个接口:

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.xaml.csDependencyService.Get<IRead>().Read();

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

获取当前活动 Xamarin 表单 的相关文章

随机推荐

  • 并行化 std::nth_element 和 std::partition

    我正在移植使用的 C 代码std nth element and std partition到 OpenCL nth element http www cplusplus com reference algorithm nth elemen
  • .NET 如何以及何时实际编译代码?

    假设您使用 C VB 或任何 NET 编写应用程序 当你点击构建时 它真的会编译你的代码吗 我是这么认为的 直到我开始在我的一些程序集上使用 redgates 反射器并逐字查看我的代码 我本来期望展开循环并进行大量优化 但什么也没有 那么编
  • 无法在 iPhone 应用程序中通过 Oauth 2.0 获取 google+ 的访问令牌

    我正在尝试在 iPhone 应用程序中使用 Oauth 2 0 访问 Google API 为此 我使用 OauthConsumer 库 我获得了未经授权的 request token 和授权码 但无法使用授权码将该 request tok
  • 我怎样才能取消 Future.delayed 函数调用

    我怎样才能取消 Future delayed 我正在使用 Future delayed 来执行某些任务 但是如果我想取消这个延迟的任务 那么他们的任何方法或任何其他要使用的东西也是如此 Future delayed Duration sec
  • 将密钥和 SSL 证书导入 java 密钥库

    我有 pem 格式的证书文件和私钥文件 是否可以使用 Java 代码和 JDK 附带的默认库 而不是第三方库 将这些文件加载 到 Java 密钥库中 当我尝试谷歌搜索时 我只能找到 der 格式的文件以使用 java 代码导入到 java
  • Python 异常传播

    我正在构建一个工具 当异常向上传播时 有关异常上下文的新数据将添加到异常中 问题是 当异常到达顶层时 所有额外的上下文数据都在那里 但只显示最新的堆栈跟踪 有没有一种简单的方法可以让异常显示抛出异常的原始堆栈跟踪而不是最后一个堆栈跟踪 或者
  • 无法在导入请求时从“集合”导入名称“映射”[重复]

    这个问题在这里已经有答案了 Python版本 Python 3 10 4 画中画版本 pip 22 0 4 所以我试图用套接字制作一个小项目 我添加了一个上传文件的功能 但是每当我导入请求时 它都会抛出此错误 下面是我运行的代码 Trace
  • USB 控制传输能否保证交付?

    USB 2 0 指定 http www usb org developers docs usb20 docs 4 种传输类型 第 5 4 节传输类型 控制转移 同步传输 中断传输 批量转账 第 5 8 节规定批量转账提供 在带宽可用的基础上
  • 如何将数据从一种表单发送到另一个类的函数

    我知道如何将数据从一种表单传递到另一种表单 但如何将数据从一种表单传递到类 这是我想要传递的数据form1上课问题 string GrpID somevalue string DurationID somevalue 我搜索过但没有得到确切
  • Android java 设置图像资源

    我对此有很大的了解 if num1 getText equals 0 num1 setText 1 ImageView hpdown1 ImageView findViewById R id hair hpdown1 setImageRes
  • 通过代码使用 NHibernate 映射:当 IDENTITY_INSERT 设置为 OFF 时,无法在表“DietUser”中插入标识列的显式值

    我花了一段时间才找到这个问题的答案 所以我想分享这份爱 当通过 SQL Server 代码使用 NHibernate 的新映射时 我无法保存实体 保存实体时 会引发 System Data SqlClient SqlException 并显
  • 我们应该在 C++ 中使用 exit 吗?

    根据C 参考 exit正常终止进程 执行常规清理 用于终止程序 正常的程序终止执行以下操作 以相同的顺序 与当前线程关联并具有线程存储的对象 持续时间被破坏 仅限 C 11 具有静态存储的对象 持续时间被破坏 C 并且使用 atexit 注
  • 如何更改 pine 脚本中函数的全局变量?

    我正在尝试编写一个脚本来获得 9 个级别的江恩平方 我已经用其他语言完成了它 但无法理解此处的 pine 脚本 它说无法修改函数中的全局变量 有什么解决方案可以获取这里的值是我的脚本 version 4 study title Volume
  • Xcode 5.1 破坏了一些测试

    自从更新到 Xcode 5 1 以来 我在尝试运行单元测试 XCTestSuite 时遇到了错误 当我运行单独的测试方法时 出现错误Error while reading test scope bundle在控制台上没有结果 当我运行测试文
  • 如何在整个组织内共享数据

    组织在多个部门和应用程序之间共享关键数据有哪些好方法 举个例子 假设有一个主要应用程序和数据库来管理客户数据 组织中还有十个其他应用程序和数据库读取该数据并将其与自己的数据关联起来 目前 这种数据共享是通过数据库 DB 链接 物化视图 触发
  • 如何以最有效的方式将图像转换为字符串?

    我想将图像文件转换为字符串 以下作品 MemoryStream ms new MemoryStream Image1 Save ms ImageFormat Jpeg byte picture ms ToArray string formm
  • 如果索引列不同,则对一列的值求和?

    当索引列不同时 如何对一列中的值求和 最初 我有这样的 SQL 查询 SELECT COALESCE SUM ISNULL cast Quantity as int 0 0 AS QuantitySum FROM Records 也尝试这样
  • CDate 可以在没有 for 循环的 Range 上使用吗?

    我有一个列 其格式如下 Range A A NumberFormat dd mm yyyy 现在 我正在寻找一个有效的版本 For k 1 To Range A1 End xlDown Row from first to last row
  • 使用 zkcli 从 ZooKeeper 删除/删除 Solr 配置?

    我们在 ZK 中有一些旧的 Solr 配置 我们需要清理 删除 配置位于 configs AAA configs BBB 等 configs 下还有其他配置 Solr zkcli sh 脚本和文档没有提供删除配置的指导 唯一看起来明显的是
  • 获取当前活动 Xamarin 表单

    我使用 Leadtools SDK 进行条码阅读器 当我尝试获取当前活动时 它给我 null 这是我的代码 Stream resourceStream new MemoryStream Droid MainActivity activity