处理应用程序上下文

时间:2012-09-03 19:37:32

标签: java android

我是android和java的新手。

我正在将我应用中的某些类重新排列为单独的类文件。我的主活动类文件中有一个onLocationListener类。我将类移动到一个单独的java类文件中。然后,以下代码将无法编译。 。

public void onProviderDisabled(String provider)
{
     Toast.makeText( getApplicationContext(),
     "Gps Disabled",
     Toast.LENGTH_SHORT ).show();
}

当此代码位于单独的文件中时,getApplicationContext将无法编译。我尝试了 this。 mainactivityname。但似乎没有任何效果。所以我想这个问题可以形成一个问题:

如何从主活动文件之外的单独java类文件中存在的代码中声明应用程序上下文? 谢谢,加里

1 个答案:

答案 0 :(得分:2)

getApplicationContext()是类Context的方法,因此您只能从以某种方式扩展Context的类或对象中调用它。您将代码从Activity中分解出来,这是一个类。那么,您的解决方案适用于包含新类或对象的Context类,以传递其上下文,以便您的新类可以使用它。

主Activity中的代码如下所示:

MyOwnClass ownObject = new MyOwnClass();
// you have to implement setApplicationContext
ownObject.setApplicationContext( this.getApplicationContext() );

立即获取应用程序上下文可能是一个好主意,因为它会在应用程序的生命周期内保持稳定,这与Activity上下文不同,后者可能会因为方向更改而变得简单。