当Fragment显示时,您可以看到它背后的主机Activity(就好像它是透明的)

时间:2015-07-11 23:35:53

标签: android android-fragments android-activity

我有一个包含按钮的Activity。按下此按钮时,我想要显示某个片段。但是,目前发生的是Fragment显示但你仍然可以看到它背后的主机Activity - 我不知道为什么。

这就是我的做法 - 主持人活动:

continueButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if (v.getId() == R.id.continueButton) {
                FragmentManager fragmentManager = getSupportFragmentManager();
                FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
                Fragment fragment = new RegisterPassword();
                fragmentTransaction.replace(android.R.id.content, fragment);
                fragmentTransaction.addToBackStack(null);
                fragmentTransaction.commit();

            }
        }
    }); 

我正在使用的碎片是:

public class RegisterPassword extends Fragment {

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    return inflater.inflate(R.layout.activity_register_password, container, false);
}
}

有谁知道为什么会这样?我怀疑它与

有关
fragmentTransaction.replace(android.R.id.content, fragment);

我不确定它是否正在替换正确的布局 - 或者是android.R.id.content泛型,代表您当前的活动/片段?

非常感谢任何帮助。

编辑:

主持人活动XML:

<?xml version="1.0" encoding="utf-8"?>
<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:padding="50dp"
    android:orientation="vertical"
    tools:context=".Register">

    <TextView
        android:layout_marginTop="115dp"
        android:id="@+id/tvTitle"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Pick A Username"
        android:textColor="#3f9845"
        android:textSize="29dp"
        android:textStyle="bold"
        android:layout_gravity="center_horizontal"/>

    <TextView
        android:layout_marginTop="30dp"
        android:id="@+id/tvInfo"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="This will be the name that appears on your profile"
        android:textSize="14dp"
        android:textColor="#3f9845"
        android:layout_gravity="center"/>

    <EditText
        android:layout_width="200dp"
        android:layout_height="40dp"
        android:background="@drawable/buttonborder"
        android:layout_gravity="center"
        android:layout_marginBottom="90dp"
        android:layout_marginTop="15dp"
        android:textSize="20dp"
        android:gravity="center"/>

    <Button
        android:id="@+id/continueButton"
        android:layout_width="150dp"
        android:layout_height="45dp"
        android:text="Continue"
        android:textColor="#3f9845"
        android:layout_gravity="center"
        android:background="@drawable/buttonborder"/>

</LinearLayout>

片段xml:

<RelativeLayout 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:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:paddingBottom="@dimen/activity_vertical_margin"
    tools:context="com.example.sv_laptop03.snapchain.RegisterPassword">

    <TextView android:text="@string/hello_world" android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

</RelativeLayout>

2 个答案:

答案 0 :(得分:3)

据我所知,片段始终加载到顶部。你可以为它添加一个背景,并且(重要!)使它可以点击,这样你就不会在背景中按活动中的任何内容:

<RelativeLayout 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:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:paddingBottom="@dimen/activity_vertical_margin"

    android:clickable="true"
    android:focusable="true"
    android:background="@color/white"

    tools:context="com.example.sv_laptop03.snapchain.RegisterPassword">

答案 1 :(得分:2)

您的片段布局没有背景。将背景颜色/资源设置为:

<RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:background="#ffffff"
    ...