Activity用错onCreate导致界面空空如也
问题
今天写了个MaterialDesign的Demo,运行后只有actionBar和背景颜色此外什么都没有了 xml里的控件 和设置的标题都显示不出来 但是xml在可视化开发环境下显示正常
处理流程
1.检查setContentView和xml书写没问题。 可能启动错了activity
2.检查清单文件启动类没错为MainActivity 。 onCreate方法书写有问题或没被调用
3.检查activity和onCreate方法没问题 验证onCreate能工作
4.在onCreate方法里设置标题、日志打印、甚至抛异常都不起作用。 onCreate方法应该没被调用
5.debug不走onCreate方法 至此确认onCreate没得到执行。 确认当前运行的是MainActivity
6.通过hierarchy view 和dumpsys查到启动的activity为MainActivity 缓存或as异常
adb shell dumpsys activity activities |findstr "MainActivity" linux 把findstr改成grep
7.clean project 重启as无效 重建代码环境且做单步排除法
8.创建新工程运行正常 确认无误
9.覆盖MainActivity和xml问题再次出现 就算xml有问题 4和5应该有响应 确认activity有问题
10.干掉渲染界面无关的代码跟正常工作工程中的activity对比发现调用的onCreate方法为两个参数的重载方法
android5.0以前
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.setContentView(R.layout.activity_main);
}
android5.0提供了一个带persistentState参数的重载方法
@Override
public void onCreate(Bundle savedInstanceState, PersistableBundle persistentState) {
super.onCreate(savedInstanceState, persistentState);
}
Activity
public void onCreate(@Nullable Bundle savedInstanceState,
@Nullable PersistableBundle persistentState) {
onCreate(savedInstanceState);
}
由于使用两参数的onCreate方法 没有写一参数onCreate方法 而正常启动activity时 只会调用第一个onCreate不会调用第二个onCreate方法 也就没有设置为activity设置layout 所以只有style设置的actionBar和背景色
解决办法 把两参数的onCreate方法改成一参数的onCreate方法
两参数的onCreate方法是用来系统关机重启保存状态用的 需跟onSaveInstanceState和onRestoreInstanceState配合使用
最后问一句多个博客 文章不同 咋同步呢 难道要一篇篇的拷。。。。