Android片段不会显示

Posted

技术标签:

【中文标题】Android片段不会显示【英文标题】:Android fragment won't show up 【发布时间】:2016-09-17 21:23:08 【问题描述】:

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

这是我的代码:

行调用片段:

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_
android:layout_
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_
        android:layout_>

        <TableLayout
            android:layout_
            android:layout_>

            <TableRow
                android:layout_
                android:layout_>

                <ImageView
                    android:id="@+id/studentPicture"
                    android:layout_
                    android:layout_
                    android:layout_span="2"/>

            </TableRow>

            <TableRow
                android:layout_
                android:layout_>

                <TextView
                    android:layout_
                    android:layout_
                    android:text="Name: "
                    android:textStyle="bold"/>

                <EditText
                    android:id="@+id/studentName"
                    android:layout_
                    android:maxLength="20"
                    android:layout_/>

            </TableRow>

            <TableRow
                android:layout_
                android:layout_>

                <TextView
                    android:layout_
                    android:layout_
                    android:text="ID: "
                    android:textStyle="bold"/>

                <EditText
                    android:id="@+id/studentId"
                    android:layout_
                    android:layout_ />

            </TableRow>

            <TableRow
                android:layout_
                android:layout_>

                <TextView
                    android:layout_
                    android:layout_
                    android:text="Phone: "
                    android:textStyle="bold"/>

                <EditText
                    android:id="@+id/studentPhone"
                    android:layout_
                    android:layout_
                    android:maxLength="10"/>

            </TableRow>

        </TableLayout>

    </RelativeLayout>

    <RelativeLayout
        android:layout_
        android:layout_
        android:layout_alignParentBottom="true"
        android:layout_centerInParent="true">

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

        <ImageButton
            android:background="@drawable/confirm"
            android:id="@+id/confirmStudentButton"
            android:layout_
            android:layout_
            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();
    

任何想法将不胜感激。谢谢。

【问题讨论】:

【参考方案1】:

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

【讨论】:

我真的不知道 :)【参考方案2】:

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

【讨论】:

分享你的活动布局【参考方案3】:

你需要给你的框架布局一个 Id 并将片段传递给它。

fragmentManager.beginTransaction().add(R.id.fragment_container, editStudent, "editStudent" ).commit();

【讨论】:

以上是关于Android片段不会显示的主要内容,如果未能解决你的问题,请参考以下文章

为啥Android不会暂停视图完全被软键盘挡住的片段?

Android TabLayout ViewPager 不会在 backstack 上膨胀标签片段

Android - 在片段中显示 WebView

Android:在片段中显示列表

Android导航组件不显示片段

Android 应用程序不会启动,也不会列出错误/警告。使用片段和问题似乎与 var args = ViewFragmentArgs