2015-03-22 9 views
1

Я пытаюсь переключиться между фрагментами в своей деятельности. Я читал this tutorial, но мой случай немного отличается, поскольку я не хочу/не могу использовать «FragmentPagerAdapter», вместо этого я хочу, чтобы кнопка, нажатая на действие, переключилась между двумя фрагментами.Переключение между фрагментами без 'FragmentPagerAdapter'

Мой макет деятельности состоит из кнопки и ViewPager. В добавлении у меня есть Fragment1 и Fragment2. Как я могу переключаться между этими фрагментами с помощью метода OnClick?

Мой Компоновка:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical"> 

    <Button 
    android:text="Switch it" 
    android:onClick="switchFragment"/> 

    <android.support.v4.view.ViewPager 
     android:id="@+id/pager" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"> 
    </android.support.v4.view.ViewPager> 

</LinearLayout> 

и моя деятельность:

public class MainHeaderFragment2 extends ActionBarActivity {  
    ... 
    public void switchFragment(View view){ 
     Fragment fragment 
     if(checkSomething()) 
      fragment = new Fragment1(); 
     else 
      fragment = new Fragment2(); 
     ViewPager viewPager = (ViewPager) findViewById(R.id.pager); 
     // now need to put the selected fragment in ViewPager somehow. 
     // How? that is my question 
    } 
} 
+2

Как вы заполняете свой «ViewPager»? Вы используете 'ViewPager' только для замены фрагментов? Если это так, вы не должны использовать это и вместо этого вместо этого использовать FragmentManager. – kha

+0

@kha вы можете уточнить? Я видел, что если я хочу использовать FragmentManager, мне нужно заменить на строку: getFragmentManager(). BeginTransaction(). Replace (R.id.fragment_container, newFragment); Но каково должно быть представление представления фрагмента_контейнера в моем layout.xml? – GyRo

+0

Слишком долго, чтобы ответить в комментарии. Отправлено как ответ. Ответ может быть неверным в зависимости от вашего вопроса и наличия ViewPager в вашем макете. Если да, дайте мне знать после того, как вы прочтете его, и я удалю его. – kha

ответ

1

на основе ваших комментариев, это то, что вы должны сделать:

Изменить расположение к этому:

<Button 
android:text="Switch it" 
android:onClick="switchFragment"/> 

<FrameLayout 
    android:id="@+id/fragment_container" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" /> 

Чтобы заполнить его первый раз с первым фрагментом:

Fragment1 fragment1 = Fragment1.create(); 
FragmentManager manager = getSupportFragmentManager(); 
FragmentTransaction fragmentTransaction = manager.beginTransaction(); 
fragmentTransaction.add(R.id.fragment_container, fragment1); 
fragmentTransaction.commit(); 

Чтобы заменить его,

Fragment2 fragment2 = Fragment2.create(); 
FragmentManager manager = getSupportFragmentManager(); 
FragmentTransaction fragmentTransaction = manager.beginTransaction(); 
fragmentTransaction.replace(R.id.fragment_container, fragment2, "optionalTag"); 
fragmentTransaction.commit(); 

Fragmen1 и Fragment2 являются фрагментами, которые вы хотите отобразить или заменить.

+0

Фрагмент не имеет метода create() – GyRo

+0

Вместо этого используйте новый фрагмент(), если вы не хотите использовать статический create(). Это более предпочтительная вещь. – kha

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

  • Нет связанных вопросов^_^