0
와 액션 바 제목 onBackPressed 관리

은 내가 먼저 내 문제 정의 할 수 있습니다 : 나는 액션 바있는 ViewPager이ViewPager

를보기 호출기의 각 페이지는 fargment 자체가 또 다른 하나 현재의 단편을 대체하기 위해 자신의 버튼을 가지고 각 페이지입니다 .

우리는 먼저 애플리케이션을 실행하고 세 번째 탭으로 스 와이프하여 여기에 viewPager onTabchanged 메소드를 사용하여 setTitle을 설정하고 아무런 문제가 없습니다.이 페이지에는 버튼이 있으며 버튼을 클릭하면 페이지가 새로운 값으로 대체됩니다 (세 번째 페이지를 항목 목록과 항목 목록 인 하위 범주로 이동하는 것과 같은 기본 범주로 생각하십시오.) 그래서 두 번 버튼 + 우리가 세 번째 페이지에 왔을 때 조각을 바꿀 때마다 백 스택에 3 조각!

 @Override 
    public void onBackPressed() { 


    int mFragmentCount = this.getSupportFragmentManager().getBackStackEntryCount(); 


      super.onBackPressed(); 
       if(mFragmentCount != 0) 
       { 

        FragmentManager.BackStackEntry backEntry=getSupportFragmentManager().getBackStackEntryAt(mFragmentCount-1); 
        String str=backEntry.getName(); //the tag of the fragment 
        mActionBar.setTitle(str); 
       } 
     } 

하지만 난 예를 들어와 ArrayOutOfIndex 오류가 발생 때마다 유효하지 않은 인덱스 2는 2 : onBackButton가 액션 바는 적절한 제목을 설정해야 누르면 내가 원하는 건이며, 여기에 내가 뭘하려!

아무에게도 도움이 될 수 있습니까?

감사합니다.

+0

를? 여기서 IMO라는 제목을 설정해야합니다. – shkschneider

+0

@shkschneider 괜찮 았지만 문제는 내가 예를 들어 6 조각을 가지고 깊숙이 들어가는 것입니다! 뒤로를 누를 때 제목을 관리하는 방법은 무엇입니까? –

+1

super.OnBackPressed()보다 먼저'mActionBar.setTitle()'을 호출 해보십시오. –

답변

1

문제는 mFragmentCount의 값을 얻으면 백스탭에 x 조각이 있지만 super.onBackPressed() 이후에 x-1 조각이 있으므로 배열의 x-1 위치에있는 조각은 그렇지 않습니다. 있다.

0

이 작업을 시도 할 수 있습니다 : 당신이`Fragment.onResume() '방법으로이 일을

@Override 
public void onBackPressed() { 
    int count = getFragmentManager().getBackStackEntryCount(); 
    if (count < 2) { 
     super.onBackPressed(); 
    } else { 
     FragmentManager.BackStackEntry backStackEntry = getFragmentManager().getBackStackEntryAt(count - 2); 
     mActionBar(backStackEntry.getName()); 
     getFragmentManager().popBackStack(); 
    } 
}