2013-12-24 2 views
1

может кто-нибудь объяснить, что означает следующий код?Что означает фрагмент в коде Android?

Что FragmentManager.BackStackEntry backEntry = fragmentManager.getBackStackEntryAt (fragmentManager .getBackStackEntryCount() - 1); означает?

Что делает

fragmentTransaction 
       .setCustomAnimations(R.anim.right_in, R.anim.right_out, R.anim.left_in, R.anim.left_out) 
       .replace(R.id.mainMainFragmentLayout, newFragment) 
       .addToBackStack(newFragment.getClass().getName()).commit() ; 

означает?

public static void addFragment(Fragment originalFragment, Fragment newFragment) { 

    FragmentManager fragmentManager = originalFragment.getActivity().getFragmentManager() ; 

    if (fragmentManager.getBackStackEntryCount() > 0) { 

     FragmentManager.BackStackEntry backEntry = fragmentManager.getBackStackEntryAt(fragmentManager 
       .getBackStackEntryCount() - 1) ; 

     if (backEntry != null && backEntry.getName().equals(newFragment.getClass().getName())) 
      return ; 
    } 

    FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction() ; 

    fragmentTransaction 
      .setCustomAnimations(R.anim.right_in, R.anim.right_out, R.anim.left_in, R.anim.left_out) 
      .replace(R.id.mainMainFragmentLayout, newFragment) 
      .addToBackStack(newFragment.getClass().getName()).commit() ; 
    fragmentManager.executePendingTransactions() ; 
} 

У меня есть Google для фрагмента, но я до сих пор не могу понять ...

Спасибо заранее.

+3

Я думаю, что каждая вещь хорошо документирована в http://developer.android.com/reference/android/app/Fragment.html –

ответ

0

Он вернет общее количество фрагментов, добавленных в стек.

Вы можете использовать getName() метод FragmentManager.BackStackEntry, который вводится в 14 уровне API и возвращает строку, которую вы можете проверить, как строки, хранящихся в addTobackStack(str) методы во время операции фрагмента.

FragmentManager.BackStackEntry backEntry = fragmentManager.getBackStackEntryAt(fragmentManager 
      .getBackStackEntryCount() - 1) ; 

Fragment fragment=getFragmentManager().findFragmentByTag(backEntry.getName()); 

Но для получения имени фрагмента сначала необходимо добавить фрагмент в стек, как указано ниже, с определенным именем.

fragmentTrans.addToBackStack("MyFragment"); 
Смежные вопросы