添加android片段会终止应用程序

时间:2017-07-06 03:16:55

标签: android android-fragments

我是Android开发的新手,我创建了一个空白片段,默认情况下有一个textview。我试图将片段添加到我的主要活动中,并且我收到以下错误:

已连接至设备上的进程3689 samsung-gt_i9300-32305248b97211f9 申请已终止。

没有任何其他例外原因。

 <?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/colorWhite"
    tools:context="com.ideasurge.winfertility.AccountActivity">

    <ImageView
        android:id="@+id/titleImageView"
        android:layout_width="wrap_content"
        android:layout_height="80dp"
        android:layout_marginLeft="30dp"
        android:layout_marginStart="30dp"
        android:layout_marginRight="30dp"
        android:layout_marginEnd="30dp"
        android:scaleType="centerInside"
        android:background="@color/colorWhite"
        app:srcCompat="@drawable/wftitleimage" />

    <TextView
        android:id="@+id/fertilityTextView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Your Fertility Companion"
        android:textStyle="bold"
        android:textSize="20sp"
        android:textColor="@color/colorBlack"
        android:paddingLeft="20dp"
        android:paddingRight="20dp"
        android:layout_marginTop="20dp"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/titleImageView"/>

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/fragmentPlaceholder"
        android:orientation="horizontal"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/fertilityTextView">

        <!-- Fragment will go here eventually, but it's not added in the layout -->

    </LinearLayout>

</android.support.constraint.ConstraintLayout>

这是Java代码:

 AccountFragment fragment = new AccountFragment();
        FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
        ft.add(R.id.fragmentPlaceholder, fragment);
    ft.commit();

3 个答案:

答案 0 :(得分:0)

您无法将片段添加到LinearLayout。必须是FrameLayout才能正常工作。

答案 1 :(得分:0)

将linearLayout更改为frameLayout。因为Fragment无法在LinearLayout中添加。

答案 2 :(得分:0)

您可以在LinearLayout中包含片段。甚至你可以在LinearLayout中拥有多个片段。

您可以找到一些文档帮助here

您的代码存在问题,因为您没有指定片段类。因此,'活动'不知道要膨胀什么。

在布局中声明片段时尝试这样的事情。

<fragment
    class="com.atwork.demo.ListFragment"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

创建引用的片段类以在活动附加时对其进行充气。

要将多个片段附加到LinearLayout,您可以在此SO回答中找到帮助here

提示

  • 考虑到它是您的完整布局文件,尝试创建根布局,然后根据需要创建subRoot布局。
  • 在父布局中声明命名空间。