当前位置: 首页 > 面试题库 >

如何从非活动类中检索上下文?

顾俊楚
2023-03-14
问题内容

我发现一个答案似乎表明我应该创建一个单独的类,并创建一个静态MyApplication对象,并创建一个get方法。然后,任何类都可以调用MyApplication.get()来检索上下文。

还有其他更清洁的方法吗?这是我的情况:

我有一个类A和一个类B。类A包含一个来自类B的对象(我们称为对象b)。在AI类中,称为“
b.play()”。但是,我得到一个空指针异常,因为类B需要将上下文传递给MediaPlayer.create()方法。

直到现在,我还是从AI类中收集了一个技巧,该类叫做....“
b.play(this)”,只是将上下文传递给了B。但是,这很丑陋,而且看起来像是对OOP的错误使用。

有什么想法吗?


问题答案:

如果类B需要一个Context才能运行,那么让类A向它提供它(通过play方法上的参数,构造函数中的参数等)不会对我造成任何问题。

我认为您不会通过为B类提供完成其工作所需的依赖关系来完成任何糟糕的OOP。



 类似资料:
  • 问题内容: 在我的android项目中,我有ImageAdapter类,可以在其中传递应用上下文以满足进一步的需求。 问题是我想使ImageAdapter作为一个单例对象,以便从我的所有活动中轻松访问此类的实例。但是我不知道如何将我的活动之一中的getApplicationContext()方法中的应用程序上下文传递给ImageAdapter。那么,有什么“魔术”可以做到以下几点? 也许您还有其他

  • 问题内容: 我创建了一个类,以从PHP文件的JSON编码中检索注释。此类从AsyncTask扩展: 如您所见,我正在尝试在“ doInBackground”过程运行时显示一个ProgressDialog。但是progressDialog构造函数要求一个Context,但我不知道如何提供它。 我从Fragment调用此类,所以无法访问这样的上下文: “主要”活动称为:AndroidViewPager

  • 我想使用下面另一个活动简单代码示例中的活动上下文,有什么想法吗? 谢谢

  • 我已经创建了一个片段,当点击一个按钮时,会弹出一个类似对话框的ALTERVIEW。在该视图中包括谷歌登录按钮。当我连接到firebase并在startActivityForResult之后继续执行时,我需要重写onActivityResult方法。但弹出对应的类扩展了另一个对话框类,不能重写onActivityResult方法。当要重写时,它显示方法并没有从其超类错误重写方法。如何解决这个问题。以

  • 问题内容: 我将Hibernate与代理一起使用,并且得到了属于的类的对象。 是否有Hibernate方法从代理 类中 检索基类(在这种情况下)?我知道,但是需要一个,而我正在寻找一个以a作为输入的方法。 问题答案: 我发现,这比我想像的要容易:只需调用代理类即可获得未代理的原始类。我不确定这有多普遍,但似乎可行。

  • 我明白我需要用硒,但我不知道怎么用。结果始终是单个字符串的列表。理想情况下,我希望返回两个列表:一个带有unix datestamp(option value=“1576627200”),另一个带有“normal”日期(即18/12/2019)的列表。 任何帮助都将不胜感激。