这是交易,我有一个简单的应用程序,你的用户将在其中登录并查看报告。我的这些报告的基本架构包括一个显示用户登录信息的页眉片段、一个包含报告内容的表格布局和一个页脚片段,我在其中为我将提供的所有报告创建了一个选项菜单。现在,我对每个报告都有不同的活动,我从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()在另一个类中,它处理诸如从数据库中获取要显示的项目之类的事情。
此外,con是activity.getApplicationContext();
在onAttach()事件中