从主活动调用片段会添加片段

时间:2014-09-21 06:29:40

标签: android android-fragments replace

我对android非常新,我坚持从主要活动调用片段。事情就是每当我说用新的布局替换()旧的framelayout时它只是添加到原来的布局而不替换视图

我的activity_main.xml如下:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/splash_screen"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:animateLayoutChanges="true"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.jaggz.gurudawaraapp.MainActivity" >

<FrameLayout
    android:id="@+id/container_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_alignParentRight="true" >

    <ImageView
        android:id="@+id/imageView1"
        android:layout_width="match_parent"
        android:layout_height="126dp"
        android:layout_marginTop="29dp"
        android:src="@drawable/splash" />

    <TextView
        android:id="@+id/splash_text"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:paddingBottom="25dp"
        android:paddingLeft=" 30dp"
        android:paddingRight="10dp"
        android:paddingTop="300dp"
        android:text="@string/splash_text"
        android:textSize="@dimen/splash_text_size"
        android:textStyle="bold|italic"
        android:typeface="sans" />
</FrameLayout>
</RelativeLayout>

我使用上面的框架布局作为容器来替换更改片段的内容

我的代码是:

    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    this.app = (App) getApplication().getApplicationContext();



    init();

}


private void init() {
     Fragment frag = new SplashLoginFragment();
     android.support.v4.app.FragmentManager fm1 = MainActivity.this.getSupportFragmentManager();
     FragmentTransaction ft1 = fm1.beginTransaction();
     ft1.setCustomAnimations(R.anim.slide_in_left, R.anim.slide_out_right);
     ft1.replace(R.id.container_main, frag);
     ft1.commit();

}

我有一个用于SplashLoginFragment的新xml 任何人都可以帮助我

1 个答案:

答案 0 :(得分:0)

replace中的FragmentTransaction来电只关注Fragments。它不会触及恰好在您添加Fragment的容器中的任何其他视图。您有两个选择:

  1. 创建单独的ViewGroup以保留SplashLoginFragment
  2. 在提交交易之前从container_main删除所有视图。