2015-02-06 2 views
0

조각을 슬라이더 메뉴로 사용하고 그 안에 목록보기가 있습니다. 조각에는 슬라이드 안팎 애니메이션이 있습니다. listview에서 해당 항목의 OnClick 활동을 엽니 다. 제가 직면 한 문제는 제가 활동을 시작할 때입니다. 프래그먼트의 슬라이더는 절반 뒤로 슬라이딩되어 액티비티가 끝나면 절반 슬라이더가 팝업 스택 액션을 완료하고 닫습니다. 이로 인해 글리치 효과가 발생합니다.조치를 취하기 전에 조각 트랜잭션이 일어날 때까지 기다리십시오.

목록보기에서 항목을 클릭하면 슬라이더가 슬라이드되어 활동이 시작되어 슬라이더가 닫히면 슬라이더가 이미 popupstack의 트랜잭션을 완료합니다.

트랜잭션이 완료되면 알 수있는 방법이 있습니까? 그런 다음 새로운 활동을 시작합니다.

내 주요 조각에서 슬라이더 조각 시작. 리스트 뷰 항목

getSupportFragmentManager() 
         .beginTransaction() 
         .setCustomAnimations(R.anim.enter_from_left, 0, 0, 
           R.anim.exit_to_left) 
         .add(R.id.parent, new SliderMenuFragment()) 
         .addToBackStack("animation").commit(); 

슬라이더 단편 온 클릭 이벤트

public void onItemClick(AdapterView<?> parent, View view, int position, 
     long id) { 

    if (((TextView) view).getText().equals("Home")) { 
     getFragmentManager().popBackStackImmediate(null, 
       FragmentManager.POP_BACK_STACK_INCLUSIVE); 
     Intent homePage = new Intent(getActivity(), 
       MyActivity.class); 
     getActivity().startActivity(homePage); 

    } 

MyActivity

완료() 메소드가 호출된다.

답변

0

나는 그것이 당신이 onAnimationEnd

public class MyFragment extends Fragment 
{ 
@Override 
public Animator onCreateAnimator(int transit, boolean enter, int nextAnim) 
{ 
    final int animatorId = ... // get proper animation id 
    final Animator anim = AnimatorInflater.loadAnimator(getActivity(), animatorId); 
    anim.addListener(new AnimatorListenerAdapter() 
    { 
     @Override 
     public void onAnimationStart(Animator animation) 
     { 
      ... 
     } 

     @Override 
     public void onAnimationEnd(Animator animation) 
     { 
      ... 
     } 
    }); 

    return anim; 

} OnAnimationEnd 방법에

+0

silder 밖으로 슬라이드에서 새로운 활동을 시작할 수 있도록 onCreateAnimator을 무시하고 애니메이션 리스너를 추가하면 만에 내가 다시 클릭 할 수 있습니다 생각 슬라이더를 닫는 popbackstack을 사용하여 onAnimationEnd 슬라이더를 닫으면 호출되지 않습니다. 내가 시작할 때만 호출 됨 트랜잭션 – beingsrv

관련 문제