2014-09-16 3 views
0

부모가 ActionBarActivity "A"(매니페스트에도 정의 됨) 인 ActionBarActivity "B"가 있습니다. A는 "singleTask"실행 모드입니다. A로부터 B를 시작할 때 다음 I는 애니메이션을 가지고홈 버튼을 눌렀을 때 맞춤 애니메이션으로 활동을 완료하는 방법

public void onItemClick(...) { 
    Intent mIntent = new Intent(getActivity(), B.class); 
    startActivity(mIntent); 
    getActivity().overridePendingTransition(R.anim.B_in, R.anim.A_out); 
} 

B에서 I는 다음 onOptionsItemSelected 있고 onBackPressed : 여기

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    int id = item.getItemId(); 
    if (id == android.R.id.home) { 
     getSupportFragmentManager().popBackStackImmediate(); 
     //onBackPressed(); 
     //finish(); 
    } 
    return super.onOptionsItemSelected(item); 
} 

@Override 
public void onBackPressed() { 
    super.onBackPressed(); 
    overridePendingTransition(R.anim.A_in, R.anim.B_out); 
} 

문제이다 I 버튼을 다시 누르면, 애니메이션 onBackPressed가 예상대로 진행 중입니다. 그러나 액션 바의 왼쪽 상단에있는 아이콘을 클릭하면 popBackStackImmediate가 호출되고 Android의 기본 애니메이션이 다른 방식으로 재생됩니다. 따라서 :

  1. 어떻게하면 onBackPressed에서와 같은 애니메이션을 얻을 수 있습니까?
  2. popBackStackImmediate() 대신 onBackPressed()를 사용해야합니까? popBackStackImmediate와 동일한 결과를 줄 것입니까?

어떤 제안 및 모범 사례

답변

2

대신 popBackStackImmediate의() 다음 pendingTransition 설정을 무시하고, 그 작동 할 수 있습니다) .popBackStack을 (사용할 수 ... 환영합니다. 이것들은 둘 다 활동이기 때문에, 나의 성향은 finish()를 호출하는 것이다; overridePendingTransition()을 호출합니다.

+0

지금까지 코드에서 finish()를 호출하는 것을 주저했지만이 경우 finish() + overridePendingTransition()을 사용합니다. 감사. – Mehmed

관련 문제