Android片段不会显示

时间:2016-05-20 14:40:30

标签: android layout transactions fragment screen

您好我正在尝试显示我创建的片段。我通过互联网搜索任何解决方案,但没有找到任何解决方案。

这是我的代码:

这些行调用片段:

FragmentManager fragmentManager = getFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
EditStudent editStudent = new EditStudent();
fragmentTransaction.add(editStudent, "editStudent").commit();

EditStudent延伸Fragment。这是我在onCreateView方法中返回的内容:

public class EditStudent extends Fragment
{
    @Override
    public View onCreateView (LayoutInflater inflater,
                          ViewGroup container,
                          Bundle savedInstanceState)
    {
        return inflater.inflate(R.layout.activity_edit_student, container, false);
    }
}

这是我的activity_edit_student布局:

<FrameLayout 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:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:gravity="left"
android:layoutDirection="ltr"
tools:context="com.nitay.uziel.students.StudentsList"
android:orientation="vertical">

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <TableLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content">

            <TableRow
                android:layout_width="match_parent"
                android:layout_height="wrap_content">

                <ImageView
                    android:id="@+id/studentPicture"
                    android:layout_width="120dp"
                    android:layout_height="120dp"
                    android:layout_span="2"/>

            </TableRow>

            <TableRow
                android:layout_width="match_parent"
                android:layout_height="wrap_content">

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="Name: "
                    android:textStyle="bold"/>

                <EditText
                    android:id="@+id/studentName"
                    android:layout_width="250dp"
                    android:maxLength="20"
                    android:layout_height="wrap_content"/>

            </TableRow>

            <TableRow
                android:layout_width="match_parent"
                android:layout_height="wrap_content">

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="ID: "
                    android:textStyle="bold"/>

                <EditText
                    android:id="@+id/studentId"
                    android:layout_width="150dp"
                    android:layout_height="wrap_content" />

            </TableRow>

            <TableRow
                android:layout_width="match_parent"
                android:layout_height="wrap_content">

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="Phone: "
                    android:textStyle="bold"/>

                <EditText
                    android:id="@+id/studentPhone"
                    android:layout_width="150dp"
                    android:layout_height="wrap_content"
                    android:maxLength="10"/>

            </TableRow>

        </TableLayout>

    </RelativeLayout>

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_centerInParent="true">

        <ImageButton
            android:background="@drawable/cancel"
            android:id="@+id/cancelStudentButton"
            android:layout_height="70dp"
            android:layout_width="70dp"
            android:layout_alignParentRight="true"
            android:layout_marginRight="10dp"
            android:layout_marginBottom="20dp"/>

        <ImageButton
            android:background="@drawable/confirm"
            android:id="@+id/confirmStudentButton"
            android:layout_height="70dp"
            android:layout_width="70dp"
            android:layout_alignParentLeft="true"
            android:layout_marginLeft="10dp"
            android:layout_marginBottom="20dp"/>

    </RelativeLayout>
</FrameLayout>

当我单击执行所有事务代码的按钮时,我仍然看到活动布局而不是片段布局。我没有任何例外,只是片段不会显示。我也知道片段是成功创建的,因为当我按下后退按钮时,我用这段代码从它的堆栈弹出片段:

@Override
public void onBackPressed()
{
    if (getFragmentManager().getBackStackEntryCount() == 0)
    {
        super.onBackPressed();
    }
    else
    {
        getFragmentManager().popBackStack();
    }
}

任何想法都会非常感激。谢谢。

3 个答案:

答案 0 :(得分:2)

我发现了问题 - FrameLayout应该在布局中 片段所属的活动

答案 1 :(得分:0)

尝试调用包含片段容器ID的另一个方法。例如fragmentTransaction.add(R.id.fragmentContainer,editStudent, "editStudent").commit();

答案 2 :(得分:0)

您需要为框架布局提供一个I&#39;并将片段传递给它。

import os

def _visit(arg, dirname, names):
    if not names:
        print 'Remove %s' % dirname
        os.rmdir(dirname)

def run(outer_dir):
    os.path.walk(outer_dir, _visit, 0)

if __name__ == '__main__':
    outer_dir = os.path.dirname(__file__)
    run(outer_dir)
    os.system('pause')