更改片段动态崩溃应用

时间:2017-09-05 12:33:36

标签: android fragment

我疯了。我想动态地用一个片段替换另一个片段。

我在这样的活动中定义了一个mainLayout:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    style="@style/EstiloBase"
    android:baselineAligned="false"
    android:orientation="vertical">

    <include
        android:id="@+id/tool_bar_dashboard"
        layout="@layout/toolbar" />

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:baselineAligned="false"
        android:orientation="horizontal">

        <android.support.v4.widget.DrawerLayout
            android:id="@+id/drawer_layout"
            android:layout_width="200dp"
            android:layout_height="match_parent"
            android:orientation="horizontal">

            <ListView
                android:id="@+id/list_view"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:choiceMode="singleChoice"
                android:divider="@android:color/transparent"
                android:dividerHeight="0dp" />

        </android.support.v4.widget.DrawerLayout>

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

我要替换的项目是FrameLayout。

在开始时,FrameLayout与这个片段紧密相关,并且一切正常:

 FragmentTransaction t = getSupportFragmentManager().beginTransaction();
    t.replace(R.id.calendar1, caldroidFragment);
    t.commit();

然后,当我点击一个按钮时,它将被替换为:

 case R.id.cambiarVista:
                FragmentTransaction t = getSupportFragmentManager().beginTransaction();
                t.replace(R.id.calendar1, new ListaEntrenamientos());
                t.addToBackStack(null);
                t.commit();

这个片段定义如下:

<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"
    tools:context="tfg.marcos.coachtrain.views.fragments.ListaEntrenamientos">

    <TextView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:text="@string/hello_blank_fragment" />

</FrameLayout>

但是当我点击该按钮时,应用程序崩溃了,它没有向我显示任何消息。

我的错误是什么?我尝试了很多次与其他选项,但是是相同的。

感谢。

1 个答案:

答案 0 :(得分:0)

FragmentManager崩溃,因为calendar1FrameLayout而不是fragment。同时制作calendar1ListaEntrenamientos Views,或同时制作Fragments。要么工作。我建议您制作Views LinearLayout/FrameLayout),并在屏幕上不需要时将Visibility更改为GONE