0

我有一个名为 FragmentActivity 的 Activity 类。在 Activity 类中,我创建了三个名称为Button1、Button2 和 Button3的按钮。我有三个片段类,分别命名为Fragment1、Fragment2 和 Fragment3

现在单击每个按钮,我在该 Activity 上设置一个特定的片段类。我想使用滑动来做同样的事情。我的意思是说在滑动时打开每个片段类。到目前为止我使用的代码如下所示。

Fragment_Activity.xml

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

    <LinearLayout
        android:id="@+id/button_layout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal" >

        <Button
            android:id="@+id/button1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Button1" />

        <Button
            android:id="@+id/button2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Button2" />

        <Button
            android:id="@+id/button3"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Button3" />

    </LinearLayout>

    <fragment
        android:id="@+id/fragment_one"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        class="in.icebreaker.fragments.Fragment1" />

    <fragment
        android:id="@+id/fragment_two"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        class="in.icebreaker.fragments.Fragment2" />

     <fragment
        android:id="@+id/fragment_three"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        class="in.icebreaker.fragments.Fragment3" />

</LinearLayout>

FragmentActivity 类的代码

public class FragmentActivity extends Activity
{   
    private Fragment1       fragment1;

    private Fragment2       fragment2;

    private Fragment3       fragment3;  

    private static final int        FRAGMENT_INDEX1 = 1001;

    private static final int        FRAGMENT_INDEX2 = 1001;

    private static final int        FRAGMENT_INDEX3 = 1001;

    private int                     m_CurrentFragment = FRAGMENT_INDEX1;

    private FragmentTransaction     m_FragmentTransaction;

    private Button                  button1, button2, button3;

    @Override
    protected void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.fragment_activity);


        button1 = (Button)findViewById(R.id.button1);
        button1.setOnClickListener(this);

        button2 = (Button)findViewById(R.id.button2);
        button3.setOnClickListener(this);

        button3 = (Button)findViewById(R.id.button3);
        button3.setOnClickListener(this);

        // Create an instance of fragment class
        fragment1 = (VisitorListFragment)getFragmentManager().findFragmentById(
                R.id.fragment_one);

        fragment2 = (ChatListFragment)getFragmentManager().findFragmentById(
                R.id.fragment_two);

        fragment3 = (ChatListFragment)getFragmentManager().findFragmentById(
                R.id.fragment_three);

        // Set current fragment on the activity 
        setFragment(m_CurrentFragment);
    }

    private void setFragment(int currentFragment) 
    {
        m_CurrentFragment = currentFragment;
        m_FragmentTransaction = getFragmentManager().beginTransaction();

        if (m_CurrentFragment == FRAGMENT_INDEX1) 
        {
            m_FragmentTransaction.show(fragment1);
            m_FragmentTransaction.hide(fragment2);
            m_FragmentTransaction.hide(fragment3);
        } 
        else if (m_CurrentFragment == FRAGMENT_INDEX2) 
        {
            m_FragmentTransaction.show(fragment2);
            m_FragmentTransaction.hide(fragment1);
            m_FragmentTransaction.hide(fragment3);
        }

        else if (m_CurrentFragment == FRAGMENT_INDEX3) 
        {
            m_FragmentTransaction.show(fragment3);
            m_FragmentTransaction.hide(fragment1);
            m_FragmentTransaction.hide(fragment2);
        } 

        m_FragmentTransaction.commit();
    }

    @Override
    public void onClick(View v) 
    {       
        switch (v.getId()) 
        {
            case R.id.button1:
            { 
                setFragment(fragment1);
                break;
            }
            case R.id.button2:
            { 
                setFragment(fragment2);
                break;
            }
            case R.id.button3:
            { 
                setFragment(fragment3);
                break;
            }
        }
    }
}
4

1 回答 1

0

您可以使用 ActionTabs + ViewPager:

http://developer.android.com/reference/android/support/v4/view/ViewPager.html

于 2013-07-11T11:43:39.123 回答