화면 하나에 프레그먼트 하나씩을 사용하시는 거죠?
데이터베이스는 앱 어디서나 접근이 가능한 전역적인 객체라고 보시면 됩니다. 따라서 데이터베이스를 사용하시는 경우 프래그먼트 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);
}