我有一个包含按钮的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>
答案 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"
...