在 OnClickListener 内部我无法访问很多东西 - 如何处理?

2023-11-23

在 OnClickListener 内部,我无法访问作用域“外部”的大多数变量,如下所示:

findViewById(R.id.Button01).setOnClickListener(new OnClickListener()
        {
            @Override
            public void onClick(View v)
            {
                Intent mainApps = new Intent(Intent.ACTION_MAIN);
                mainApps.addCategory(Intent.CATEGORY_LAUNCHER);
                List<ActivityInfo> activities = this.getPackageManager().queryIntentActivities(mainApps, 0);
                /*
                Intent intent = new Intent("com.sygic.drive/com.sygic/drive/.SygicDriveActivity");
                startActivity(intent);*/
            }

        });

在此示例中,我需要获取 PacketManager,但无法获取它,因为我在 OnClickListener 中没有可用的上下文。

我可以在外部创建静态引用,然后在内部使用它,但这是正确的吗?必须一直这样做似乎很奇怪?


Replace this在你的代码中MyActivity.this其中 MyActivity 是 Activity 子类的类名。

说明:当您使用这部分代码时,您正在创建一个匿名内部类:
new OnClickListener() {
匿名内部类具有对创建它们的类的实例的引用。看起来您是在 Activity 子类中创建它,因为 findViewById 是一个 Activity 方法。活动是一个上下文,因此您所需要做的就是使用您自动拥有的对它的引用。

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

在 OnClickListener 内部我无法访问很多东西 - 如何处理? 的相关文章

随机推荐

  • Pygame 中正在进行的两个音乐曲目之间的淡入淡出

    我的意图是两首音乐曲目 性质相似 彼此之间淡出在不同的时间 当发生这种淡入淡出时 一个音乐曲目应在短时间内从最大音量淡入静音 同时另一首曲目应从 0 淡出到 100 并继续播放从同一时间索引 他们必须能够做到这一点动态地任何时候 当某个动作
  • 如何使用MOQ框架为抽象基类创建Mock?

    我想为 MyClass 编写单元测试 但它的基类是一个抽象类 public class MyClass AbstractBaseClass 我想模拟抽象基类 以便在创建要测试的 MyClass 实例时可以跳过其构造函数中的一些逻辑 无论如何
  • R nls 奇异梯度

    我尝试搜索有关此主题的其他线程 但没有一个修复对我有用 我有一个自然实验的结果 我想显示符合指数分布的事件连续发生的次数 我的R shell粘贴在下面 f lt function x a b a exp b x gt x 1 1 2 3 4
  • 我可以在 JavaScript 中压缩数据吗?

    我正在使用一些相当繁重的 AJAX 其中包含从客户端到服务器的大量数据 在发送到服务器之前如何压缩数据 主要是纯文本 那么如何在服务器端解压数据呢 jSEND 似乎正是这样做的 有人用过吗 已删除损坏的链接 导致垃圾邮件登陆页面 jsend
  • 如何在 angular.js 中捕获具有任意数量斜杠的 URL?

    我想创建一个处理文件的有角度的网站 用户可以在文件系统树中导航 就像在 github 上一样 github com angular angular js tree master path to my file js 我想捕捉到这一点path
  • 创建一个协程来淡出不同类型的对象

    您好 我正在尝试创建一个统一的协程 它将处理各种对象的淡入淡出 到目前为止 我能够获得我想要的不同类型的 alpha 值 但对于如何在 lerping 后设置新颜色 我陷入了死胡同 这是我的代码 public static IEnumera
  • MVC3 部分视图和模型不回发更改

    我有一个模型 其中包含可以修改的项目集合 我使用部分视图呈现集合 该视图又使用 EditorForModel 输出集合中每个元素的 HTML model Footy Models EventModel h2 Model Team1Name
  • 如何使用 ng-click 进行重定向

    我正在尝试构建超级简单的 AngularJS 应用程序 将凭据接受到两个文本框中 然后使用双向绑定将按钮单击重定向到其中包含两个变量的 url 我的问题是 我可以让它工作一个简单的 a href 或者也许 ng href 但由于某种原因 无
  • 如何在 C 中公开 C++ 函数指针?

    我在 C 中定义了两种类型的函数指针 如下所示 typedef void CallbackFn bool std string py array t
  • Java Web 服务/JAXB - 抽象超类

    我有一个包含 JAXB 带注释的类和抽象超类的包 我想在 Web 服务接口中使用这个超类 所以我 可以将任何子类作为参数传递 当我这样做时 会抛出异常 javax xml ws WebServiceException javax xml b
  • android动画将视图移动到另一个视图

    我有两个不同布局的视图 我想将一个视图移动到另一个视图 我的代码有什么问题吗 Y 动画播放错误 第一个视图位于片段的布局中 第二个视图位于状态栏中 int p1 new int 2 int p2 new int 2 viewOne getL
  • 是否有与 MySql 等效的 Profiler? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 Microsoft SQL Server Profiler 是 SQL Trace 的图形用户界面 用于监视数据库引擎或 Analysis Serv
  • Azure - BlobStore SAS uri 命令执行失败。

    当我尝试使用 Azure 门户创建云服务的生产部署并尝试上传包 cspkg 文件 时 我收到错误消息 BlobStore SAS uri 命令执行失败 详细信息 状态代码 0 状态文本 无 当我尝试上传配置 cscfg 文件 时 我收到相同
  • 初始化char数组时,剩余空间是零填充还是未初始化?

    Given char foo 1024 bar 这将初始化 foo 以包含 b a r 0 剩余的 1020 个字符是零初始化还是未初始化 我认为上面的内容与 char foo 1024 b a r 0 相同 与聚合的初始化一样 任何未提及
  • 如何仅将 Spring Converter 用于某些控制器?

    我有一个可以工作的 c 转换器 public class StringToLongConverter implements Converter
  • 通过 1 次提交回滚本地和远程 git 存储库 [重复]

    这个问题在这里已经有答案了 我读过有关该主题的类似帖子 但我一生都无法弄清楚如何正确执行此操作 我签入了大约 1000 个我不想要的文件 我不想通过 1by1 将它们全部从存储库中删除 我有一个遥控器master Branch 我有当地的m
  • 是否可以为 std::cin 设置超时?

    是否可以为 std cin 设置超时 例如 std cin 在 10 秒内没有收到任何数据 它会引发异常或返回错误 Edited 那么定时器呢Boost library 据我所知 它是便携式图书馆 是否可以要求 Boost 库的计时器在预定
  • Rails has_many,只查找有孩子的

    我的 产品 表 has many registered products 我想用类似的东西 products find has registered products 其中仅返回在 Registered products 表中也有条目的产品
  • Android Studio 3.3 中缺少 Instant Run

    目前 在 Android Studio 3 3 版本中 缺少允许即时运行的 Apply Changes 选项的快捷方式 还有另一个选项称为 更新正在运行的应用程序 它不提供相同的功能 如屏幕截图所示 此选项在 3 1 等旧版本中可用 我无法
  • 在 OnClickListener 内部我无法访问很多东西 - 如何处理?

    在 OnClickListener 内部 我无法访问作用域 外部 的大多数变量 如下所示 findViewById R id Button01 setOnClickListener new OnClickListener Override