마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

프래그먼트에서 sqlite 사용하기

0 추천
안드로이드 개발을 공부하는 학생입니다
sqlite를 사용하는데 질문이 있어서요
지금만들고 있는 앱이 카카오톡 이랑 비슷한 ui로
액티비티 하나에 프래그먼트 4개로 구성이 되어있습니다. 프래그먼트 1에서 저장한 데이터를 프래그먼트 2에서 사용하고 싶은데 그러면 프래그먼트1 에서 메인엑티비티로 데이터를 넘기고 sqlite로 저장후에 파래그먼트2에서 읽어와야하는건가요?
ostwatch (160 포인트) 님이 2020년 12월 22일 질문

1개의 답변

0 추천

화면 하나에 프레그먼트 하나씩을 사용하시는 거죠?

데이터베이스는 앱 어디서나 접근이 가능한 전역적인 객체라고 보시면 됩니다. 따라서 데이터베이스를 사용하시는 경우 프래그먼트 1에서 데이터베이스에 저장을 하신 다음, 다음화면에서는 그냥 방금 저장한 데이터를 데이터베이스에 접근해서 해당 데이터를 읽어오시면 됩니다.

저장한 키 값은 것을 화면 간에 넘기시면 어떤 데이터를 저장했는지 알 수 있을 거구요. 아래에 간단한 샘플을 추가했습니다.

public class User {
   private final String id;  // primary key
   private final String name;

   public User(String id, String name) {...}
   //나머지 생략
}

// Fragment1
private void saveUserAndNavigateToFragment2(User user) {
     db.saveUser(user)
    
      supportFragmentManager.beginTransactions()
              .replace(R.id.fragment_frame, Fragment2.newInstance(user.getId()))
              .addToBackStack(null)
              .commit();            
}



//Fragment2

public static final String ARG_USER_ID = "ARG_USER_ID"

public static Fragment2 newInstance(userId: String) {
      Bundle args = new Bundle();
     args.putString(ARG_USER_ID, userId);

      Fragment2 fragment = new Fragment2();
      fragment.setArguments(args);
      return fragment;
}

private void readArgumentAndGetUser() {
    String storedUserId = getArguments().getString(ARG_USER_ID)
     if (TextUtils.isEmpty(storedUserId)) {
           throw new IllegalArgumentException("There is no user saved");
    }

    User user = getUser(storedUserId);
    doSomethingWithUser(user);
}

private User getUser() {
    return db.getUser(storedUserId);
}

 

spark (148,650 포인트) 님이 2020년 12월 23일 답변
...