Android中报错 FATAL EXCEPTION MAIN
出现这个问题的原因多半是因为所用到的资源没有找到:
例如:
1、资源引用错误
TabSpec spec2 = tabHost.newTabSpec("tab2");
spec1.setIndicator("通知公告");
spec1.setContent(R.id.tabNotification);
tabHost.addTab(spec2);
TabSpec spec3 = tabHost.newTabSpec("tab3");
spec1.setIndicator("培训资料");
spec1.setContent(R.id.tabFiles);
tabHost.addTab(spec3);
上面的代码是通过复制粘贴得到的,仔细检查发现,变量名没有更改完全,spec1重复使用。更改后的代码:
TabSpec spec2 = tabHost.newTabSpec("tab2");
spec2.setIndicator("通知公告");
spec2.setContent(R.id.tabNotification);
tabHost.addTab(spec2);
TabSpec spec3 = tabHost.newTabSpec("tab3");
spec3.setIndicator("培训资料");
spec3.setContent(R.id.tabFiles);
tabHost.addTab(spec3);
将spec1分别改为spec2和spec3。
很多时候我们在复制粘贴时容易犯这种细节性的错误。
2、在AndroidManifest.xml文件中没有找到对应的资源,这往往是由于在其他地方修改了资源名,但AndroidManifest.xml中并不会自动修改,所以AndroidManifest.xml中找不到对应的资源。
例如:
将之前的类名TongXunActivity改为TongXunPlatforActivity,但在AndroidManifest.xml中仍然保存的是TongXunActivity:
<activity
android:name=".TongXunformActivity"
android:label="@string/title_activity_tong_xun" >
</activity>
这样就找不到我们更改后的TongXunPlatforActivity。此时应该在AndroidManifest.xml中手动更改为:
<activity
android:name=".TongXunPlatformActivity"
android:label="@string/title_activity_tong_xun" >
</activity>
3、我们通过Eclipse的快捷方式新建的Activity,默认是保存在工程的默认包下面.
例如:com.whu.mobileoa
在AndroidManifest.xml中android:name选项也就以英语句号(.)来报名该Activity在默认包下面:
<activity
android:name=".MainActivity"
android:label="@string/app_name" >
但在实际开发中往往需要在子包中新建Activity:
这是还得需要在AndroidManifest.xml中更改这个Activity的位置,否则是无法找到这个Activity的:
<activity android:name=".tongxunplatform.TongXunPlatformActivity"
android:label="@string/title_activity_tong_xun" >
</activity>
这里在英语句号(.)后添加的tongxunplatform就是子包名。