0

我有一个应用程序,它设置了一个带有 5 个选项卡的 TabHost。这些选项卡是片段活动。在这些片段活动中的每一个中,都设置了几个片段。

我的 Main 类设置 tabHost 和片段活动,如下所示

     public class Main extends TabActivity 
        {

            public void onCreate(Bundle savedInstanceState)
            {
                super.onCreate(savedInstanceState);
                requestWindowFeature(Window.FEATURE_NO_TITLE);
                setContentView(R.layout.main);

            Resources res = getResources();
                tabHost = getTabHost();
                TabHost.TabSpec spec;
                Intent intent;

      intent = new Intent().setClass(this,
                                                 Tab1.class);
                    spec = tabHost
                    .newTabSpec("home")
                                            .setIndicator("Home",
                                                    res.getDrawable(R.drawable.tabhome))
                                            .setContent(intent);
                                    tabHost.addTab(spec);
        //and do this for the other 4 tabs

    tabHost.setCurrentTab(0);
}

        }

然后我的 fragmentActivity 是这样设置的

public class Tab1 extends FragmentActivity
{

    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.home);

FragmentTransaction fragmentTransaction = getSupportFragmentManager()
                .beginTransaction();
        // Fragments
        Fragment fragOne = new FragmentOne();
        Fragment fragTwo = new FragmentTwo();
        Fragment fragThree = new FragmentThree();

        fragmentTransaction.replace(R.id.fragmentOne, fragOne);
        fragmentTransaction.replace(R.id.fragmentTwo, fragTwo);
        fragmentTransaction.replace(R.id.fragmentThree, fragThree);

        fragmentTransaction.commit();

      }
}

Tab1 Fragment Activity 有 3 个片段,如上所示。每个 Fragment、FragmentOne、FragmentTwo 和 FragmentThree 每个都在 Fragment 内包含一个下一步按钮。

我想知道的是如何设置它,以便它们在类中的每个片段之间转换。例如

Frag1(在 Frag1 中单击下一步按钮),Frag 2 从右侧过渡(在 Frag2 中单击下一步按钮) Frag3 从右侧过渡(在 Frag3 中,单击下一步按钮) Frag1 从右侧过渡。

任何帮助将不胜感激!!!

编辑:还将在 home.xml 布局文件中粘贴片段的设置方式,以防您想知道我是如何设置的。

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/homeMain"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical" >

    <RelativeLayout
                    android:id="@+id/FragmentOneRL"
                    android:layout_width="wrap_content"
                    android:layout_height="100dp"
                    android:orientation="vertical" >

                    <FrameLayout
                        android:id="@+id/fragmentOne"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content" >
                    </FrameLayout>
                </RelativeLayout>

                <RelativeLayout
                    android:id="@+id/FragmentTwoRL"
                    android:layout_width="wrap_content"
                    android:layout_height="100dp"
                    android:layout_below="@+id/FragmentOneRL"
                    android:orientation="vertical" >

                    <FrameLayout
                        android:id="@+id/fragmentTwo"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content" >
                    </FrameLayout>
                </RelativeLayout>

                <RelativeLayout
                    android:id="@+id/FragmentThreeRL"
                    android:layout_width="wrap_content"
                    android:layout_height="100dp"
                    android:layout_below="@+id/FragmentTwoRL"
                    android:orientation="vertical" >

                    <FrameLayout
                        android:id="@+id/fragmentThree"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content" >
                    </FrameLayout>      

                </RelativeLayout>

       </RelativeLayout>
4

1 回答 1

0

我最终想通了,我将 XML 文件更改为这个

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

             <FrameLayout
                    android:id="@+id/TheFragment"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content" >
                </FrameLayout>

</RelativeLayout>

然后在 FragmentActivity 我创建了这个方法

protected void changeFragment(Fragment removeFrag, Fragment f)
    {
        FragmentTransaction ft = fm.beginTransaction();
        ft.setCustomAnimations(R.anim.view_transition_in_left,
                R.anim.view_transition_out_left);
        ft.replace(R.id.TheFragment, f);
        ft.remove(removeFrag);
        ft.addToBackStack(null);
        ft.commit();
    }

然后在用户单击下一步按钮时的每个片段中都会执行类似的操作

Fragment f = ((Tab1) getActivity()).fragTwo;
            Fragment rf = ((Tab1) getActivity()).fragOne;


            ((Tab1) getActivity()).changeFragment(rf, f);
于 2012-05-24T10:09:42.973 回答