2012-04-02 8 views
0

私はAndroidアクティビティを持っています。私は理解したように、res/xml/searchable.xmlの検索インテントと関連付けているため、自動的にインスタンス化されるContentProviderを持っています。アクティビティとContentProviderの間でデータベースを共有するにはどうすればよいですか?

アクティビティとコンテンツプロバイダから使用したいSQLiteOpenHelperも作成しましたが、どちらにもアクセスできるようにする方法はわかりません。

  • 私は活動の中でのonCreateヘルパーを作成した場合、私はのContentProviderから活動への参照を取得する方法を 分かりません。
  • ContentProviderのonCreateメソッドからヘルパーをインスタンス化すると、 はアクティビティからContentProviderインスタンス への参照を取得する方法がわかりません。

SQLiteOpenHelperを所有するオブジェクトはどれですか?また、どのオブジェクトを他のオブジェクトからアクセスできますか?

+0

すでにCP経由でのみCPにして活動アクセスもデータにCPを使用SLOHを持っている場合... – Selvin

+0

しかし、どのようにしますActivityへの参照がない場合、ActivityからContentProviderインスタンスにアクセスしますか?これはまさに私の問題です。 –

+0

あなたはCPのインスタンスを取得しません...あなたは 'Activity.getContentResolver()。query(Uri.parse(" content://your.content ")、cols、rest、of、 ); '.... – Selvin

答えて

0

ActivityContent Providerからアクセスできるグローバルアプリケーションオブジェクトに割り当てることができます。 SQLOpenHelperActivityまたは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; 
    } 

} 

は、あなたがこのようなあなたのActivityContent Providerコールヘルパーから[アプリケーションのコンテキスト

<application 
     android:name="ClassName"    // <----- This line 
     android:icon="@drawable/icon" 
     android:label="@string/app_name" > 

を作成していることAndroidManifest.xmlに指定する必要があります。

SQLiteOpenHelper helper = ((ClassName)getApplication()).getHelper(); 

if(null == helper) { 
helper = new SQLiteOpenHelper(); 
} 
+0

['ContentProvider'](http://developer.android.com/reference/android/content/ContentProvider.html)には' getApplication() 'メソッドがあります。何か不足していますか? –

+0

getApplication()の代わりにgetApplicationContext()を使用してみてください。これは同じことです。 – Mayank

+0

'getApplicationContext()'もありません。 –

0

((クラス名)のgetContext()。getApplicationContext())。にgetHelper()

関連する問題