0

这是交易,我有一个简单的应用程序,你的用户将在其中登录并查看报告。我的这些报告的基本架构包括一个显示用户登录信息的页眉片段、一个包含报告内容的表格布局和一个页脚片段,我在其中为我将提供的所有报告创建了一个选项菜单。现在,我对每个报告都有不同的活动,我从onOptionsItemSelected()开始/启动这些活动,如下所示:

getActivity().startActivity(intent);

第一个报告、菜单及其所有项目都可以完美加载。但是当我从菜单中选择一个菜单项时,我的应用程序停止给出以下异常:

04-04 18:29:49.670: E/AndroidRuntime(1123): java.lang.RuntimeException: 
Unable to start activity ComponentInfo{com.example/com.example.Report2}: 
android.view.InflateException: Binary XML file line #10: Error inflating class fragment

我猜这是因为下一个活动也包含这些片段(页眉和页脚)。我的方法错了吗?我正在网上查找,但大量信息最终让我感到困惑。任何帮助,将不胜感激!

*编辑:*

报表 1 的布局 XML

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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:baselineAligned="false"
    android:gravity="center"
    android:orientation="vertical">

    <fragment
        android:name="com.example.HeaderFragment"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_gravity="center"
        android:layout_weight="1"
        android:gravity="center_horizontal"
        tools:layout="@layout/header_fragment" />

    <TableLayout
        android:id="@+id/tblSummRep"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="4"
        android:padding="5dip">

    </TableLayout>
    <fragment
        android:name="com.example.FooterFragment"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_gravity="center"
        android:layout_weight="1"
        android:gravity="center_horizontal"
        tools:layout="@layout/footer_fragment" />   

</LinearLayout>

所有报告的上述布局都相同

路由菜单项的代码(在页脚片段的类中)如下:

@Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle item selection
        int switchTo = mm.routeMenu(item, con);
        switch (switchTo) {
        case 2:
            intent = new Intent(con, Report2.class);
            isAct = "Y";
            break;
        case 3:
            intent = new Intent(con, Report3.class);
            isAct = "Y";
            break;
        case 4:
            intent = new Intent(con, Report4.class);
            isAct = "Y";
            break;
        case 5:
            intent = new Intent(con, Report5.class);
            isAct = "Y";
            break;
        case 6:
            intent = new Intent(con, Report6.class);
            isAct = "Y";
            break;
        default:
            super.onOptionsItemSelected(item);
        }
        if(isAct.toUpperCase().equals("Y")){
            if(Login.lstLogin != null){
                getActivity().startActivity(intent);
            }
        }
        return true;
    }

mm.RouteMenu()在另一个类中,它处理诸如从数据库中获取要显示的项目之类的事情。

此外,conactivity.getApplicationContext();onAttach()事件中

4

0 回答 0