更改片段抛出活动中的类

时间:2015-04-14 08:12:26

标签: android android-fragments

我有三个片段和一个活动。 我已将两个片段并排放在活动中,我想点击第一个片段,将其更改为第三个片段。

活动:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:baselineAligned="false"
    android:orientation="horizontal" 
    android:id="@+id/parent">

    <fragment
        android:id="@+id/mainPage"
        android:layout_width="0dp"
        android:layout_weight="0.7"
        android:layout_height="wrap_content"
        class="com.example.user1.lotus.MainMenu" >
    </fragment>
    <fragment
        android:id="@+id/side_bar"
        android:layout_width="0dp"
        android:layout_weight="0.3"
        android:layout_height="wrap_content"
        class="com.example.user1.lotus.SideBar" >
    </fragment>

</LinearLayout>

现在我想改变class="com.example.user1.lotus.MainMenu" 通过我的活动class="com.example.user1.lotus.Starter"

这可能吗?

活动

public void onFragmentInteraction(String s){
          switch (s){
                case "menu":
                    break;
                case "starters":
                    break;
                case "mainDish":
                    MainDish newFragment = new MainDish();
                    FragmentTransaction transaction = getFragmentManager().beginTransaction();

                    transaction.replace(R.id.mainPage, newFragment);
                    transaction.addToBackStack(null);

                    transaction.commit();

并在片段中

 btnMainDish.setOnClickListener(new View.OnClickListener()
    {
        @Override
        public void onClick(View v)
        {
            mListener.onFragmentInteraction("mainDish");
        }
    });

1 个答案:

答案 0 :(得分:1)

只需在按钮的onClick侦听器方法中执行此操作,您的片段将被第三个片段替换:

ThirdFragment newFragment = new ThirdFragment();
FragmentTransaction transaction = getFragmentManager().beginTransaction();

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

// Commit the transaction
transaction.commit();

希望这有帮助。