Hei! 이 시도 :
private OnBackStackChangedListener backStackListener = new OnBackStackChangedListener() {
@Override
public void onBackStackChanged() {
String name = "";
int position = getSupportFragmentManager().getBackStackEntryCount();
if(position!=0){
FragmentManager.BackStackEntry backEntry=getSupportFragmentManager().getBackStackEntryAt(position-1);
name=backEntry.getName();
}
if(position==0){
mainActionBar();
}
else if(name=="someWord"){
mainActionBar2();
}
else{
mainActionBar3();
}
}
};
getSupportFragmentManager().addOnBackStackChangedListener(backStackListener);
및 거래에
는 다음과 같이 가기 backstack에 태그를 추가
getSupportFragmentManager().beginTransaction()
.replace(R.id.main, SomeFragment.newInstance(some argument))
.addToBackStack("someWord").commit();
하여 FragmentTransaction이 완료
내 문제는 내 거래가 잘 진행되었는지 여부가 아니라 완료 시점을 아는 것입니다. 그렇지 않으면, 내보기의 표시 사이에 간격이 있으며 내 작업의 메뉴 표시 줄을 변경합니다. –
executePendingTransactions를 호출하면 트랜잭션이 강제 종료됩니다. 여태까지는 뷰가로드되는 데 시간이 걸립니다. 이를 확인하려면 정적 함수를 사용하여 조각의 onResume에서 호출하십시오. –
나는 이것이 "이벤트"가 아닌 경우에도 유효한 대답이라고 생각합니다. executePendingTransactions()는 트랜잭션이 완료 될 때까지 * 차단합니다. 트랜잭션이 완료되면 이벤트가 발생하는 것처럼 호출되고 이벤트 리스너의 오버 헤드가없는 경우에도 다음 명령이 호출됩니다. – auval