我是android和java的新手。
我正在将我应用中的某些类重新排列为单独的类文件。我的主活动类文件中有一个onLocationListener类。我将类移动到一个单独的java类文件中。然后,以下代码将无法编译。 。
public void onProviderDisabled(String provider)
{
Toast.makeText( getApplicationContext(),
"Gps Disabled",
Toast.LENGTH_SHORT ).show();
}
当此代码位于单独的文件中时,getApplicationContext将无法编译。我尝试了 this。和 mainactivityname。但似乎没有任何效果。所以我想这个问题可以形成一个问题:
如何从主活动文件之外的单独java类文件中存在的代码中声明应用程序上下文? 谢谢,加里
答案 0 :(得分:2)
getApplicationContext()是类Context的方法,因此您只能从以某种方式扩展Context
的类或对象中调用它。您将代码从Activity中分解出来,这是一个类。那么,您的解决方案适用于包含新类或对象的Context
类,以传递其上下文,以便您的新类可以使用它。
主Activity中的代码如下所示:
MyOwnClass ownObject = new MyOwnClass();
// you have to implement setApplicationContext
ownObject.setApplicationContext( this.getApplicationContext() );
立即获取应用程序上下文可能是一个好主意,因为它会在应用程序的生命周期内保持稳定,这与Activity上下文不同,后者可能会因为方向更改而变得简单。