我正在研究SQLiteOpenHelper
,我将通过静态方法从中读取数据库(因为数据库是共享的)。是否可以将应用程序上下文转换为:
public static final Context context = XXX;
应该可能吗?因为我显然只是从当前应用程序调用,所以资源和数据库都在应用程序内共享。
要明确:我想访问资源和SQLiteDatabases
(如果我碰巧在上下文方法上出错了)。
有可能实现吗?
修改 是否有可能从这样的内容中获取上下文(不将其作为参数传递)
public class foo{
foo(){
XXX.getResources();
}
}
EDIT2: 尝试@britzl:s拳头想法
public class SpendoBase extends Application{
private static Context context;
public SpendoBase(){
System.out.println("SPENDOBASE: " + this);
System.out.println("SPENDOBASE: " + this.getBaseContext());
}
public static Context getContext(){
return this.context;
}
}
我如何掌握上下文?在构造函数中或形成getContext();
P getBaseContext()
返回null,而getApplicationContext
则返回nullPointerException
。
答案 0 :(得分:1)
我看到了三个可能的问题解决方案:
创建自己的Application子类,并将其设置为清单文件中的应用程序类。在您的子类中,您可以使用静态getInstance()方法,该方法可以从应用程序中的任何位置为您提供应用程序上下文(以及资源)。例如:
public class BaseApplication extends Application {
private static BaseApplication instance;
public BaseApplication() {
super();
instance = this;
}
public static BaseApplication getInstance() {
return instance;
}
}
在AndroidManifest.xml中:
<application android:name="com.example.BaseApplication" ...>
...activities
</application>
将上下文传递给您在SQLiteOpenHelper中进行的任何调用
使用依赖注入