在为Activity定义自定义初始屏幕样式后,super.onCreate崩溃了?

时间:2015-01-04 19:16:20

标签: android styles splash-screen oncreate

我想在我的应用中添加一个SplashScreen并对此事做了一些研究。一些教程说你可以创建一个活动,并有一些计时器显示它几秒钟。我无法让它们正常工作,然后在这个页面How do I make a splash screen?中,第二个最高投票的答案说不是展示活动(并且因为它不会替代白/黑启动加载屏幕但是添加更多延迟)您应该创建自定义样式并将其分配给Manifest文件中的活动。我做到了,创造了一个像这样的新风格:

<style name="splashScreenTheme" parent="Theme.AppCompat.NoActionBar">
    <item name="android:windowBackground">@drawable/launchscreen</item>
</style>
在styles.xml中

并将我的Manifest改为:

    <application
    android:name=".EFBApp"
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >
    <activity
        android:name=".MainActivityDrawer"
        android:label="@string/app_name"
        android:screenOrientation="portrait"
        android:theme="@style/splashScreenTheme">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
</application>

当我运行我的应用程序时,我可以完美地看到启动屏幕,但随后它崩溃了。通过断点我发现当MainActivityDrawer(我的主类)到达super.onCreate(savedInstanceState)时;然后它崩溃(它进入ZygoteInit.java类,之后它在断点调试时崩溃)。如果我在Manifest中删除android:theme主题行,它可以正常工作,但在启动时会显示可怕的纯白色屏幕。有什么建议或想法吗?非常感谢。

1 个答案:

答案 0 :(得分:0)

好的,所以我设法让它不会崩溃,而不是将父级分配为Theme.AppCompat.NoActionBar,我只使用了AppTheme并且现在可以使用了。我希望这对任何人都有帮助。