Как я могу совместно использовать базу данных между Activity и ContentProvider? - PullRequest
0 голосов
/ 02 апреля 2012

У меня есть Android Activity и ContentProvider, который (как я понимаю) создается автоматически, потому что я связал его с поисковым намерением в res/xml/searchable.xml.

Я также создал SQLiteOpenHelper, который я хотел бы использовать из Activity и провайдера контента, но я не знаю, как сделать его доступным для них обоих.

  • Если я создаю помощника в onCreate Действия, я не знаю, как получить ссылку на действие от ContentProvider.
  • Если я создаю экземпляр помощника из метода onCreate ContentProvider, я не знаю, как получить ссылку на экземпляр ContentProvider из деятельности.

Какой объект должен владеть SQLiteOpenHelper и как я могу получить к нему доступ из другого?

Ответы [ 2 ]

0 голосов
/ 30 марта 2013

((ClassName) getContext (). GetApplicationContext ()). GetHelper ()

0 голосов
/ 02 апреля 2012

Вы можете назначить его глобальному объекту Application, к которому вы сможете получить доступ из Activity и Content Provider. Вы можете создать SQLOpenHelper в Activity или CP, просто проверив, является ли он нулевым или нет, и создает ли он нулевой новый объект 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();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...