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

현재 프래그먼트 구하는 방법

0 추천
메인액티비티에 프래그먼트 컨테이너 하나가 존재하고 메뉴옵션에 글쓰기 메뉴가 있어서 각각의 프래그먼트 (1번, 2번, 3번, 4번)에서 메인창의 글쓰기 메뉴를 누를 시 각각 프래그먼트의 부속 글쓰기 프래그먼트로 연결할 시, 현재 프래그먼트를 구해서 각각의 글쓰기 메뉴로 넘겨주려하는데 현재 프래그먼트를 구하는 방법을 잘 모르겠습니다 ㅠㅠ

예. 메인창에 3번의 프래그먼트가 띄워져 있고, 이 때, 글쓰기 메뉴를 누르면 3번의 프래그먼트의 글쓰기메뉴로 넘기려합니다

getFragmentManager.fingFragmentByTag로 해보려했는데 안되네요 어떻게 하면 좋을까요?
니꾸네무 (170 포인트) 님이 2017년 2월 8일 질문

1개의 답변

0 추천
 
채택된 답변

fingFragmentByTag 사용하려면 등록시 tag 를 등록해야 합니다. 

replace 나 add 할 때 세번째 인자에 frgment 의 해당 이름을 입력하고 fingFragmentByTag 에 등록한 이름으로 검색하세요 

 

aucd29 (218,390 포인트) 님이 2017년 2월 8일 답변
니꾸네무님이 2017년 2월 13일 채택됨
if(getFragmentManager.fingFragmentByTag("1")){
  해당코드
}
이런식으로 해보려 했는데 안되네요 if문을 어떤식으로 작성해줘야 할까요?
findFragmentByTag 의 반환 값은 Fragment 입니다.

Fragment frgmt = getFragmentManager.findFragmentByTag("clsName or 1?");
if (frgmt != null) {
// TODO
}

식이여야겠지요


https://developer.android.com/reference/android/app/FragmentManager.html#findFragmentByTag(java.lang.String)
감사합니다. 혹시 태그로 찾는 방법말고는 현재 프래그먼트를 구하는 메소드는 없나요?
딱히 없어보입니다.
stack 개수를 기준으로 tagname 을 구해 current를 얻는 방법 이 추가로 있지만 결론적으로는 tag를 이용해야되거든요

 public Fragment getCurrentFragment() {
        if (mFrgmtManager == null) {
            return null;
        }

        int count = mFrgmtManager.getBackStackEntryCount();
        if (count > 0) {
            BackStackEntry frgmt = mFrgmtManager.getBackStackEntryAt(count - 1);
            return mFrgmtManager.findFragmentByTag(frgmt.getName());
        }

        return null;
    }
...