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

2023-12-24

我已经发现一个答案 https://stackoverflow.com/questions/4177731/android-how-to-call-method-from-another-class-without-passing-context这似乎是说我应该创建一个单独的类并创建一个静态 MyApplication 对象并创建一个 get 方法。然后任何类都可以调用 MyApplication.get() 来检索上下文。

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

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

到目前为止,我组合了一个 hack,从 A 类中我调用了......“b.play(this)”并简单地将上下文传递给 B。然而,这非常丑陋,看起来像是对 OOP 的错误使用。

有什么想法吗?


这个问题在Android开发中似乎经常出现。获取对特定上下文的引用的一种解决方案是对应用程序进行子类化并获取对所需上下文的引用。

public class MyApplication extends Application { 

private Context context;

@Override
public onCreate() {
  super.onCreate();
  this.context = getApplicationContext() // Grab the Context you want.
}

public static Context getApplicationContext() { return this.context; }
}

但是,此解决方案要求您在清单中指定子类的名称。

<application
    android:name=".MyApplication"
</application>

然后,您可以在应用程序中的任何位置使用它,就像在非活动类中一样。

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

如何从非活动类中检索上下文? 的相关文章

随机推荐