片段在布局内部不可见但工作正常

时间:2017-06-14 14:58:57

标签: android android-fragments

我已经阅读了很多关于同一问题的问题,但没有一个答案解决了我的问题。

这是我活动的布局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:tools="http://schemas.android.com/tools"
    tools:host="clyky.cartracker.activities.RegistrationActivity"
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:layout_marginStart="@dimen/container_default_left_margin"
    android:layout_marginEnd="@dimen/container_default_right_margin"
    android:layout_marginTop="@dimen/activity_vertical_margin"
    android:layout_marginBottom="@dimen/activity_vertical_margin">

    <FrameLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:layout_marginBottom="10dp">

        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/ic_id_card"/>
    </FrameLayout>
    <EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:inputType="textPersonName"
        android:id="@+id/txtUsername"
        android:hint="Username"
        android:layout_marginBottom="@dimen/edit_text_bottom_margin"
        android:padding="5dp"/>

    <EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:inputType="textPassword"
        android:id="@+id/txtPassword"
        android:hint="Password"
        android:layout_marginBottom="@dimen/edit_text_bottom_margin"
        android:padding="5dp"/>

    <EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:inputType="textPassword"
        android:id="@+id/txtConfirmPassword"
        android:hint="Confirm password"
        android:layout_marginBottom="@dimen/edit_text_bottom_margin"
        android:padding="5dp"/>

    <EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:inputType="text"
        android:id="@+id/txtName"
        android:hint="Name"
        android:layout_marginBottom="@dimen/edit_text_bottom_margin"
        android:padding="5dp"/>

    <EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:inputType="text"
        android:id="@+id/txtSurname"
        android:hint="Surname"
        android:layout_marginBottom="@dimen/edit_text_bottom_margin"
        android:padding="5dp"/>

    <Button
        android:text="Registrati"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/btnSignUp"
        android:layout_margin="15dp"/>

    <FrameLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/registrationContainer">
    </FrameLayout>
</LinearLayout>

我的片段已添加到最后FrameLayout registrationContainer

LoadingRegistrationFragment f = LoadingRegistrationFragment.newInstance(args);
Utilities.addFragment(R.id.registrationContainer, f, null, getSupportFragmentManager());

这是我的addFragment方法:

public static void addFragment(int containerID, Fragment toAdd, @Nullable String tag, FragmentManager manager)
    {
        FragmentTransaction trans = manager.beginTransaction();
        trans.add(containerID, toAdd, tag);
        trans.commit();
    }

这是我LoadingRegistrationFragment的{​​{1}}:

onCreateView

我的片段工作正常,它只是看不见,我无法弄清楚原因。 我已经使用调试器检查了@Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { Bundle args = getArguments(); username = args.get("username").toString(); encryptedPassword = args.get("password").toString(); name = args.get("name").toString(); surname = args.get("surname").toString(); listener = (RegistrationListener) getActivity(); View v = inflater.inflate(com.devspark.progressfragment.R.layout.fragment_progress, container, false); sendRequest(); return v; } 中的vonCreateView但是没有,它有一个值。 我还尝试将我的活动布局包装在null中以查看该片段是否显示在下方,但它仍然不可见。

2 个答案:

答案 0 :(得分:0)

尝试使用trans.replace(containerID, toAdd)代替trans.add(containerID, toAdd, tag)

并将属性更改为您的片段

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

答案 1 :(得分:0)

在您的MainActivity容器中,而不是这个:

<FrameLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:id="@+id/registrationContainer">
</FrameLayout>

替换为:

<FrameLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/registrationContainer"/>