从活动调用片段并更新布局

时间:2014-05-09 22:09:56

标签: android android-layout android-fragments

我有一个主要活动,我正在使用此活动来调用片段注销。我面临的问题是即使我在片段中,我也无法从背景中删除活动的布局。所以在这种情况下,我看到了活动布局,最重要的是我看到了片段布局。我只是想从片段中删除调用活动布局。我怎么做到这一点?

我的主屏幕如下所示:enter image description here

我的注销屏幕如下所示: enter image description here

我的主屏幕布局如下所示:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
                xmlns:tools="http://schemas.android.com/tools"
                xmlns:plus="http://schemas.android.com/apk/lib/com.google.android.gms.plus"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                tools:context=".MainActivity" >

    <android.support.v4.widget.DrawerLayout
            xmlns:android="http://schemas.android.com/apk/res/android"
            android:id="@+id/drawer_layout"
            android:layout_width="match_parent"
            android:layout_height="match_parent">

        <!-- Framelayout to display Fragments -->
        <FrameLayout
                android:id="@+id/frame_container"
                android:layout_width="match_parent"
                android:layout_height="match_parent" >
        </FrameLayout>

        <!-- Listview to display slider menu -->
        <ListView
                android:id="@+id/list_slidermenu"
                android:layout_width="240dp"
                android:layout_height="match_parent"
                android:layout_gravity="start"
                android:choiceMode="singleChoice"
                android:divider="#FFCC00"
                android:dividerHeight="1dp"
                android:listSelector="@drawable/list_selector"
                android:background="#111"/>
    </android.support.v4.widget.DrawerLayout>

    <LinearLayout
            android:id="@+id/llProfile"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_marginBottom="20dp"
            android:orientation="horizontal"
            android:weightSum="3"
            android:visibility="gone">



        <LinearLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginLeft="10dp"
                android:orientation="vertical" >
             <!--   android:layout_weight="2" -->

            <ImageView
                    android:id="@+id/imgProfilePic"
                    android:layout_width="80dp"
                    android:layout_height="wrap_content" />
                   <!-- android:layout_weight="1" -->


            <TextView
                    android:id="@+id/txtName"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:padding="5dp"
                    android:textSize="20dp" />

            <TextView
                    android:id="@+id/txtEmail"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:padding="5dp"
                    android:textSize="18dp" />
        </LinearLayout>
    </LinearLayout>

    <com.google.android.gms.common.SignInButton
            android:id="@+id/btn_sign_in"
            android:layout_width="321dp"
            android:layout_height="142dp"
            android:layout_marginBottom="20dp"
            android:layout_gravity="center"/>

</RelativeLayout>

这就是我调用片段的方式:

 Fragment fragment = null;
private ListView drawerListView;
private String[] navMenuTitles;

fragment = new LogOffFragment(mGoogleApiClient);
if (fragment != null) {
            FragmentManager fragmentManager = getFragmentManager();
            fragmentManager.beginTransaction()
                    .replace(R.id.frame_container, fragment).commit();

            // update selected item and title, then close the drawer
            drawerListView.setItemChecked(position, true);
            drawerListView.setSelection(position);
            setTitle(navMenuTitles[position]);
            drawerLayout.closeDrawer(drawerListView);
}
该片段的

onCreateView如下所示:

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {

    View rootView = inflater.inflate(R.layout.fragment_logoff, container, false);

    return rootView;
}

1 个答案:

答案 0 :(得分:0)

片段生活在自然界的活动中。但是你有几个选择。

  1. 在您的片段上设置一个坚实的背景,这样您就不会看到活动
  2. 隐藏活动布局
  3. 将您的注销功能放入活动而不是片段
  4. 获取当前活动内容并将其放入片段中。然后让您的活动有一个容器来托管片段,并在需要时用logout片段替换内容。