반응형
반응형
MainActivity.java
Fragment fragment, parentFragment;
public void AddFragmentView(Fragment fragment, Fragment parentFragment) {
this.fragment = fragment;
this.parentFragment = parentFragment;
FragmentManager fm = getSupportFragmentManager();
FragmentTransaction fragmentTransaction = fm.beginTransaction();
fragmentTransaction.add(R.id.main_container, fragment);
fragmentTransaction.addToBackStack(fragment.toString());
fragmentTransaction.commit();
}
Fragment
✅ 현재에서 다음으로 넘어갈 때, 현재 값을 가지고 감
✅ fragment : 다음, parentFragment : 현재
ex)
MessageFragment -> 메세지 목록을 보여줌
MessageViewFragment -> 메세지 상세보기
MessageViewFragment.java (기본)
private static MessageViewFragment fragment;
public static MessageViewFragment newInstance() {
fragment = new MessageViewFragment();
return fragment;
}
MessageViewFragment.java (응용 - 값 전달)
private static MessageViewFragment fragment;
public static MessageViewFragment newInstance(Message msg) {
fragment = new MessageViewFragment();
Bundle args = new Bundle();
args.putSerializable("message", msg);
fragment.setArguments(args);
return fragment;
}
MessageFragment.java
@OnClick -> 리싸이클러뷰에 대한 click listener 이라고 가정
private static MessageFragment mFragment;
public void onClick() {
Message msg = mAdapter.getItem(pos); // click한 메세지 데이터
((MainActivity)getActivity()).AddFragmentView(
MessageViewFragment.newInstance(msg), mFragment
);
}
@Override
public void onBackPressed() {
FragmentManager fm = getSupportFragmentManager();
int backStackEntryCount = fm.getBackStackEntryCount();
if (backStackEntryCount == 0) {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder
.setMessage("정말로 종료하시겠습니까?")
.setPositiveButton("취소", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
dialogInterface.cancel();
}
})
.setNegativeButton("확인", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
finish();
}
});
AlertDialog alertDialog = builder.create();
alertDialog.show();
} else {
fm.popBackStack();
if(fragment.toString().contains("OrderFragment")){
((MainFragment)parentFragment).resetData();
}
}
}
반응형
'Mobile > Android' 카테고리의 다른 글
[ Android ] Fragment Activity 데이터 전달 (0) | 2023.07.26 |
---|---|
[ Android ] Fragment에서 Activity로 데이터 전달 (0) | 2023.07.26 |
[ Android ] 쉽게 정리한 Fragment 애니메이션 (0) | 2023.07.25 |
[ Android ] EditText 커서 색 변경, 포커스 제거 (0) | 2023.07.25 |
[ Android ] EditText 엔터 처리 및 다양한 속성 알아보기 (0) | 2023.07.24 |