2014-08-18 3 views
1

Android: у меня есть список фрагментов на activity.based по выбору, другой фрагмент будет показан в том же действии , но другой фрагмент должен быть заменен, и я не знаю как это сделать, когда зафиксирован фрагмент списка!Как добавить два фрагмента в одном действии

+1

вы можете использовать FrameLayout и в вашем коде установить вам первый фрагмент затем, если необходимо заменить фрагмент другого фрагмента, используя менеджер Фрагмент – MHP

+0

Да, используя '' вместо '' это лучший способ, когда необходимо заменить фрагмент – Pravin

+0

вы имеете в виду два фрагмент по активности за один раз или только один? – penkzhou

ответ

1

От Google руководства для замены фрагментов: http://developer.android.com/training/basics/fragments/fragment-ui.html

// Create fragment and give it an argument specifying the article it should show 
ArticleFragment newFragment = new ArticleFragment(); 
Bundle args = new Bundle(); 
args.putInt(ArticleFragment.ARG_POSITION, position); 
newFragment.setArguments(args); 

FragmentTransaction transaction = getSupportFragmentManager().beginTransaction(); 

// Replace whatever is in the fragment_container view with this fragment, 
// and add the transaction to the back stack so the user can navigate back 
transaction.replace(R.id.fragment_container, newFragment); 
transaction.addToBackStack(null); 

// Commit the transaction 
transaction.commit(); 
1

Там же на портале разработчиков в guide on Fragments. Взгляните на часть "programmatically add" (и на весь гид). Короче: вам нужна ViewGroup, которая используется как контейнер для фрагментов и FragmentTransaction, который используется для добавления/замены фрагмента в этом контейнере.

Нечто подобное (взято из руководства):

FragmentManager fragmentManager = getFragmentManager() 
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); 
ExampleFragment fragment = new ExampleFragment(); 
fragmentTransaction.add(R.id.fragment_container, fragment);//fragment_container is the ID of the ViewGroup container in your layout 
fragmentTransaction.commit(); 

в вашей деятельности.

EDIT:

Короче говоря - не поставить фиксированный фрагмент в макет вашей деятельности в. Вместо этого разместите контейнер, динамически add, ваш первый фрагмент в контейнере и замените его другим фрагментом, когда вам это нужно (с помощью FragmentTransaction's replace).

Смежные вопросы