позвольте мне сначала определить мою проблему:
у меня есть ViewPager с ActionBar, каждая страница пейджера просмотра представляет собой фаргмент, и каждая страница сама имеет свои собственные кнопки для замены текущего фрагмента другим. Например:
мы сначала запускаем приложение и прокручиваем на третью вкладку, здесь мы устанавливаем заголовок с помощью метода viewPager onTabchanged, и нет проблем, на этой странице у нас есть кнопки, и нажатие на них заменит страницу на себя новыми значениями (подумайте о 3-й странице как о главной категория, которая показывает список элементов и кнопок, например, перемещает нас в подкатегории, которые снова являются списком элементов), поэтому, если мы дважды нажмем кнопки +, мы попадем на 3-ю страницу, и каждый раз, когда мы заменяем фрагмент, теперь у нас есть 3 фрагмента в backStack! все, что я хочу, это когда onBackButton Pressed actionBar должен установить правильный заголовок, вот что я пробовал:
@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!
кто-нибудь может мне помочь в этом?
спасибо!
Fragment.onResume()
методах? Вот где вы должны установить заголовок IMO. - person shkschneider   schedule 14.01.2015mActionBar.setTitle()
доsuper.OnBackPressed()
. - person Ravi K Thapliyal   schedule 14.01.2015ArrayOutOfBoundsException
, потому что вы получаете fragmentCount, а затем вызываетеsuper.onBackPressed()
. Это, вероятно, вытолкнет запись из заднего стека, в результате чего вашmFragmentCount
выйдет за пределы - person 0xDEADC0DE   schedule 14.01.2015