2

어디서 잘못됩니까? 난 단지 주어진 ProductId의 조각이 BackStack에서 이미 사용 가능한지 확인하고 싶습니다.findFragmentByTag는 항상 null을 반환합니다.

예 아니요를 선택하면 새 단편을 추가하고 그렇지 않으면 현재 단편을 뒷쪽 단 추에 추가하십시오.

public void showThisFragment(Fragment newFragment,int productId){ 
    FragmentManager fragmentManager = getSupportFragmentManager(); 
    FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); 
    fragmentTransaction.replace(R.id.am_fragment_holder, newFragment); 
    if(fragmentManager.findFragmentByTag(productId+"")==null){ 
     fragmentTransaction.addToBackStack(productId+""); 
    }else{ 
     //TODO fragment already present 
     //So dont add to the back stack 
    }  
    fragmentTransaction.commit(); 
} 

도와주세요!

+0

처음에는 키가있는 조각을 추가하는 것과는 다른 키를 사용하여 조각을 백 스택에 추가해야합니다. 또는 백 스택을 직접 검색하여 키를 조회 할 수도 있습니다. 좋은 글쓰기가 있습니다. (http://stackoverflow.com/questions/9702216/get-the-latest-fragment-in-backstack) – NameSpace

+0

키를 사용하여 추가 할 수 없습니다. 내 경우 태그는 무엇입니까? 나는 가지고있다. 현재 코드에서 몇 가지 변화를 도울 수 있습니까? – AabidMulani

답변

1

대체 된 조각에 태그가 추가되지 않았습니다. 세 개의 인수 대체 메소드를 사용해야합니다. 나는 그것을 시험하지 않았으므로 내가 옳은지 말해봐.

fragmentTransaction.replace(R.id.am_fragment_holder, newFragment, String.valueOf(productId)); 
+0

도움이되지 않습니다 ... 예상치 못한 결과가 나오면 ... – AabidMulani

+0

Ok. 나는 당신의 코드를 컴파일 할 것이다. 계속 지켜봐. –

관련 문제