2012-04-02 2 views
0

나는 Android 액티비티를 가지고 있는데, 이해할 수있는 콘텐츠 제공자는 res/xml/searchable.xml의 검색 의도와 연관 지어서 자동으로 인스턴스화됩니다.활동과 ContentProvider간에 데이터베이스를 공유하려면 어떻게합니까?

또한 활동 및 콘텐츠 공급자에서 사용하려는 SQLiteOpenHelper를 만들었지 만 둘 다 액세스 할 수있는 방법을 모르겠습니다. 내가 활동의에서 onCreate에서 도우미를 작성하는 경우

  • , 나는 컨텐트 프로에서 활동에 대한 참조를 가져 오는 방법을 모른다.
  • ContentProvider의 onCreate 메서드에서 도우미를 인스턴스화하면 I Activity에서 ContentProvider 인스턴스 에 대한 참조를 얻는 방법을 알 수 없습니다.

SQLiteOpenHelper를 소유해야하는 객체는 무엇이며 어떻게 다른 객체에서 액세스 할 수 있습니까?

+0

이미 ... 단지 CP와 CP를 통해 활동 액세스를 데이터에 – Selvin

+0

를 CP 사용 SLOH이있는 경우 그러나 어떻게 할 그것에 대한 참조가 없으면 Activity에서 ContentProvider 인스턴스에 액세스합니까? 이건 내 문제 야. –

+0

당신은 CP 인스턴스를 얻지 못할 것입니다 ... 당신은 단지 Activity.getContentResolver(). query (Uri.parse ("content : //your.content"), cols, rest, of, the, stuff로 CP를 쿼리해야합니다.); .... .... – 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; 
    } 

} 

는 당신은 당신이이처럼 Activity 또는 Content 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()

관련 문제