2014-08-31 3 views
0

나는 안드로이드와 프래그먼트에 익숙하다. 그래서 내 질문은 앱 데이터베이스에 값을 저장하는 적절한 방법에 관한 것이다.조각에서 값을 저장하는 적절한 방법은 무엇입니까?

활동의 조각을 호출하고 데이터베이스 처리기를 전달합니까?

ExampleFragment fragment = (ExampleFragment) getFragmentManager().findFragmentById(R.id.example_fragment); 
fragment.<specific_function_name>(dbhandler); 

또는 조각에서 활동 방법을 호출합니까?

import mainActivity; 
... 
mainActivity currentActivity=(mainActivity)getActivity(); 
currentActivity.storeValures(val,val2...) 

하거나? 모든 조각의 데이터베이스 핸들러를 설정 ...

아니면이 처리하는 더 좋은 디자인이 무엇입니까?

미리 답변 해 주셔서 감사합니다. 데이터베이스 관리 프로그램이 전체 응용 프로그램에 대한 보편적 인 것 때문에

+0

(컨텍스트)

나는이 방법을 사용는 ..., 그 중복 코드를 방지하는 것입니다. 또는 별도의 클래스에서 데이터베이스 호출을 처리하고 해당 클래스에 대한 참조를 프래그먼트로 전달하여 데이터베이스 활동이 활동 및 단편 모두에서 완전히 분리되도록 할 수 있습니다. – cYrixmorten

답변

1

, 당신은 싱글의 DataHandler 인스턴스

public class MyDatabaseHandler extends SQLiteOpenHelper{ 
    private static MyDatabaseHandler databaseHandlerInstance; 

    public static synchronized MyDatabaseHandler getInstance(Context context) { 
     if(databaseHandlerInstance == null) 
     databaseHandlerInstance = new MyDatabaseHandler(Context context); 

     return databaseHandlerInstance; 
    } 

    public MyDatabaseHandler(Context context){ 
     // Call to super class 
     // 
    } 

    // ..... onCreate calls 
} 

당신이 MyDatabaseHandler.getInstance 같은 앱에서 어디서든 dbhandler를 사용할 수있는이 방법이 것하는의 DataHandler 클래스를 만들 수 있습니다 데이터베이스 호출이 비슷하면 내가 파편에서 활동 메소드를 호출 말을

+0

이걸 사용하겠습니다.하지만 databaseHandler 생성자/getInstance에 컨텍스트를 전달해야한다면 어떻게해야합니까? – Motheus

+0

다른 테이블에 대해 dbHandler가 있다고 가정하면 DatabaseHandler 생성자에서 각 테이블을 정의 및 초기화하고이를 사용할 수 있으므로 컨텍스트를 전달할 수 있습니다 (예 : dContext). 및 기타 필요한 params 생성자의 매개 변수로 – maaz

+0

나는 메신저로 조금 혼란 스럽다 메신저로 안드로이드 새로운 생각합니다. 그래서, 나는 새로운 databaseConnection (this)으로 내 액티비티의 핸들러를 사용할 수있다. 액티비티에는 컨텍스트가 포함되어 있기 때문이다. 그러나 조각에서 이것이 가능하지 않거나 새로운 databaseConnection (getActivity());을 수행해야합니다. 이거 괜찮아?. 조각이 초기화되지 않으면 사용 가능한 핸들러를 얻을 수 없으며 컨텍스트없이 초기화되지 않습니다. 감사합니다 – Motheus

관련 문제