fragment replace 질문입니다.

조회수 2318회

화면 아래쪽에 framelayout을 놓고 그 안에 코드로 fragment 2개를 추가해서 replace해가면서 사용하려고 합니다. 지금

private BestCommentsFragment bestCommentsFragment;
private RecentCommentFragment recentCommentFragment;

bestCommentsFragment = new BestCommentsFragment().newInstance();
recentCommentFragment = new RecentCommentFragment().newInstance();

getSupportFragmentManager().beginTransaction()
        .replace(R.id.comments_frameLayout, bestCommentsFragment).commit();


@Override
public void onClick(View v) {
    switch (v.getId()) {
        case R.id.best_comments_Txv:
            transactionMenuFragment(bestCommentsFragment);
            Log.e("tag", "    d" + " daf");
            break;
        case R.id.recent_comments_Txv:
            transactionMenuFragment(recentCommentFragment);
            break;
    }
}

/*
프래그먼트 replace 메소드
 */
public void transactionMenuFragment(Fragment fragment) {
    getSupportFragmentManager()
            .beginTransaction()
            .replace(R.id.comments_frameLayout, fragment)
            .addToBackStack(null)
            .commit();
}

이렇게 코딩을 했는데 프래그먼트와 액티비티 간의 통신이 안되는 것 같아요 ㅜ 관리를 어떻게 해야하나요?

  • 통신을 안된다는 것이 어떤 의미인가요? 실제 통신이 이뤄지는 코드를 올려주실 수 있을까요? 알 수 없는 사용자 2017.3.9 09:59
  • 어제 삽질하다 다른 에뮬레이터로 했을 때와 실제 단말기에서 했을 때 잘 되서 이건 해결이 됬는대요! 그런데 위에 코드와 같이 txv 를 누를때마다 프래그먼트가 replace되는데 백버튼을 누르면 프래그먼트가 반응을 하네요 replace전으로 가게 되더라구요! 찾아보니까 addToBackStack(null)때문인데 저게 정확히 무슨 기능인지를 모르겟네요 ㅜ 저걸 삭제하니까 back버튼이 프래그먼트에 먹히지 않더군요 kyudongPark 2017.3.9 11:10
  • addToBackStack() 함수는 트랜잭션을 백 스택에 저장하는 처리를 합니다. 백 스택은 액티비티에 의해 관리되며 back 버튼 클릭 시 이전 프래그먼트 상태로 되돌아 갈 수 있습니다. 자세한 내용은 다음 링크의 프래그먼트 트랜잭션 수행 부분을 읽어보세요. https://developer.android.com/guide/components/fragments.html?hl=ko#Transactions 알 수 없는 사용자 2017.3.9 11:57

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)