没有'FragmentPagerAdapter'片段之间切换 [英] switch between fragments without 'FragmentPagerAdapter'

查看:245
本文介绍了没有'FragmentPagerAdapter'片段之间切换的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想在我的活动片段之间进行切换。
我读本教程,但我的情况是因为有一点不同我不想/不能使用'FragmentPagerAdapter,相反,我想要一个按钮,是pssed上的活动$ p $ 2将片段之间切换。

我的活动布局由一个按钮,ViewPager的。此外,我已经得到片段1和Fragment2。
我怎么能这个片段之间使用OnClick方法切换?

我的布局:

 < LinearLayout中的xmlns:机器人=htt​​p://schemas.android.com/apk/res/android
    的xmlns:工具=htt​​p://schemas.android.com/tool​​s
    机器人:layout_width =match_parent
    机器人:layout_height =match_parent
    机器人:方向=垂直>    <按钮
     机器人:文字=切换为
     安卓的onClick =switchFragment/>    < android.support.v4.view.ViewPager
        机器人:ID =@ + ID /寻呼机
        机器人:layout_width =match_parent
        机器人:layout_height =match_parent>
    < /android.support.v4.view.ViewPager>< / LinearLayout中>

和我的活动:

 公共类MainHeaderFragment2扩展ActionBarActivity {
    ...
    公共无效switchFragment(查看视图){
         片段片段
         如果(checkSomething())
           片段=新片段1();
         其他
           片段=新Fragment2();
        ViewPager viewPager =(ViewPager)findViewById(R.id.pager);
        //现在需要把选择的片段ViewPager莫名其妙。
        // 怎么样?这是我的问题
    }
}


解决方案

根据您的意见,这是你应该做的:

布局改成这样:

 <按钮
 机器人:文字=切换为
 安卓的onClick =switchFragment/><的FrameLayout
    机器人:ID =@ + ID / fragment_container
    机器人:layout_width =match_parent
    机器人:layout_height =match_parent/>

要与你的第一个片段填充它第一次:

 片段1片段1 = Fragment1.create();
FragmentManager经理= getSupportFragmentManager();
FragmentTransaction fragmentTransaction = manager.beginTransaction();
fragmentTransaction.add(R.id.fragment_container,片段1);
fragmentTransaction.commit();

要替换它,

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

Fragmen1 Fragment2 是要显示或更换片段。

I am trying to switch between fragments on my activity. I was reading this tutorial, but my case is a bit different since I don't want/can't use the 'FragmentPagerAdapter', instead, I want that a button that is pressed on activity will switch between 2 fragments.

My activity layout consist of a Button and ViewPager. in Addition I have got Fragment1 and Fragment2. How can I switch between this fragments using OnClick method?

My Layout:

<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>

and my activity:

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
    }
}

解决方案

Based on your comments, this is what you should do:

Change your layout to this:

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

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

To populate it first time with your first fragment:

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

To replace it,

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

Fragmen1 and Fragment2 are the fragments you want to display or replace.

这篇关于没有'FragmentPagerAdapter'片段之间切换的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆