片段默认视图不会更改

时间:2014-04-29 02:41:50

标签: android fragment

我真的需要帮助。

这就是我的应用程序的样子。我有两(2)个片段,左边是按钮,右边是我的细节。

较大的片段有一个默认显示,我称之为splash。在这里查看图像,这是一个更大的图像,可以获取设备的高度。

所以我的情况是当我点击/按下按钮1时,它会显示该片段,但图像仍然存在。
我现在的问题是,如何摆脱'泼水显示'?

这是我的代码

/**
 * on main listener
 */
@Override
public void onMainListener(String whatPress){
    Fragment fr = null;

     if(whatPress.equals("button1"))
         fr = new FragmentOne();
     if(whatPress.equals("button2"))
         fr = new FragmentTwo();
     if(whatPress.equals("button3"))
         fr = new FragmentThree();

     FragmentManager fm = getFragmentManager();
     FragmentTransaction fragmentTransaction = fm.beginTransaction();
     fragmentTransaction.replace(R.id.detailFragment, fr, whatPress);
     fragmentTransaction.commit();
}

上面的代码是处理按下按钮的代码。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal" >

<fragment
    android:id="@+id/menuFragment"
    android:name="FragmentMenu"
    android:layout_width="0dp"
    android:layout_weight="1"
    android:layout_height="match_parent"
    class="com.mizsh.Fragment_Menu" />

<fragment
    android:id="@+id/detailFragment"
    android:name="com.mizsh.Fragment_Splash"
    android:layout_width="0dp"
    android:layout_weight="1"
    android:layout_height="match_parent" />

</LinearLayout>

上面的代码是我的main.xml

Figure 1

1 个答案:

答案 0 :(得分:1)

您应该将detailFragment替换为FrameLayout

<FrameLayout android:id="@+id/detailFragment" android:layout_weight="1"
    android:layout_width="0px" android:layout_height="match_parent" />

并将其替换为活动Fragment_Splash中的onCreate

FragmentTransaction fragmentTransaction = fm.beginTransaction();
fragmentTransaction.replace(R.id.detailFragment, fragmentSplash, null);
fragmentTransaction.commit();

然后点击

替换所选片段
FragmentTransaction fragmentTransaction = fm.beginTransaction();
fragmentTransaction.replace(R.id.detailFragment, chosenFragment, null);
fragmentTransaction.commit();