这是交易,我有一个简单的应用程序,用户将登录并查看报告。 我的这些报告的基本架构包括一个标题片段,它将显示用户登录信息,然后是一个表格布局,它将保存报告内容和一个页脚片段,我在其中为我将提供的所有报告创建了一个选项菜单。 现在,我对每个报告都有不同的活动,我从 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>
以上布局对于所有报告都是相同的
用于路由菜单itmes的代码(在页脚的片段中)如下:
@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()事件中