我有一个Android Activity,一个ContentProvider(据我所知)自动实例化,因为我已经将它与res/xml/searchable.xml
中的搜索意图相关联。
我还创建了一个SQLiteOpenHelper,我想在Activity和Content提供程序中使用它,但我不知道如何让它们都可以访问它们。
哪个对象应该拥有SQLiteOpenHelper,如何从另一个对象访问它?
答案 0 :(得分:0)
您可以将其分配给您可以从Activity
和Content Provider
访问的全局Application对象。您可以在SQLOpenHelper
或Activity
中实例化CP
,只需检查其是否为null,以及它的null是否创建新的SQLOpenHelper
对象并分配给全局对象。
public class ClassName extends Application {
private SQLiteOpenHelper helper;
@Override
public void onCreate() {
// TODO Auto-generated method stub
super.onCreate();
}
public SQLiteOpenHelper getHelper() {
return helper;
}
public void setHelper(SQLiteOpenHelper helper) {
this.helper = helper;
}
}
,您必须在AndroidManifest.xml
中指定您正在创建应用程序上下文
<application
android:name="ClassName" // <----- This line
android:icon="@drawable/icon"
android:label="@string/app_name" >
然后从您的Activity
或Content Provider
来电助手那样。
SQLiteOpenHelper helper = ((ClassName)getApplication()).getHelper();
if(null == helper) {
helper = new SQLiteOpenHelper();
}
答案 1 :(得分:0)
((ClassName)getContext()。getApplicationContext())。getHelper()