Android 在整个项目中使用一个BaseActivity时,不会显示任何内容

Android 在整个项目中使用一个BaseActivity时,不会显示任何内容,android,android-activity,Android,Android Activity,我已经为所有活动创建了一个BaseActivity,用于为所有活动设置标题和其他内容,但在启动应用程序时没有显示任何内容 以下是基本活动的代码: abstract class BaseActivity: AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?, persistentState: PersistableBundle?) { super.onCre

我已经为所有活动创建了一个BaseActivity,用于为所有活动设置标题和其他内容,但在启动应用程序时没有显示任何内容

以下是基本活动的代码:

    abstract class BaseActivity: AppCompatActivity() {

        override fun onCreate(savedInstanceState: Bundle?, persistentState: PersistableBundle?) {
            super.onCreate(savedInstanceState)
            overridePendingTransition(0, 0)
            setContentView(getContentView())
            onViewReady(savedInstanceState, intent)
        }

        abstract fun getContentView(): Int
        abstract fun onViewReady(savedInstanceState: Bundle?, intent: Intent?)
    }
    class MainActivity : BaseActivity() {


        override fun getContentView(): Int = R.layout.activity_main

        override fun onViewReady(savedInstanceState: Bundle?, intent: Intent?) {

        }
    }
以下是主要活动:

    abstract class BaseActivity: AppCompatActivity() {

        override fun onCreate(savedInstanceState: Bundle?, persistentState: PersistableBundle?) {
            super.onCreate(savedInstanceState)
            overridePendingTransition(0, 0)
            setContentView(getContentView())
            onViewReady(savedInstanceState, intent)
        }

        abstract fun getContentView(): Int
        abstract fun onViewReady(savedInstanceState: Bundle?, intent: Intent?)
    }
    class MainActivity : BaseActivity() {


        override fun getContentView(): Int = R.layout.activity_main

        override fun onViewReady(savedInstanceState: Bundle?, intent: Intent?) {

        }
    }
清单文件:

    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="com.unigem">

        <application
            android:allowBackup="true"
            android:icon="@mipmap/ic_launcher"
            android:label="@string/app_name"
            android:roundIcon="@mipmap/ic_launcher_round"
            android:supportsRtl="true"
            android:theme="@style/AppTheme">
            <activity android:name=".gem.MainActivity">
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />
                    <category android:name="android.intent.category.LAUNCHER" />
                </intent-filter>
            </activity>
        </application>

    </manifest>


我做错了什么

因为在
BaseActivity
中重写错误的
onCreate()
,即
onCreate(savedInstanceState:Bundle?,persistentState:PersistableBundle?

您需要覆盖
onCreate(savedInstanceState:Bundle?)而不是上面版本的
onCreate()
,如下所示

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    overridePendingTransition(0, 0)
    setContentView(getContentView())
    onViewReady(savedInstanceState, intent)
}

如果您对
onCreate()
(您重写的方法)的第二个实现感到好奇,请阅读更多信息,因为在
BaseActivity
中,您重写了错误的
onCreate()
,即
onCreate(savedInstanceState:Bundle?,persistentState:PersistableBundle?

您需要覆盖
onCreate(savedInstanceState:Bundle?)而不是上面版本的
onCreate()
,如下所示

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    overridePendingTransition(0, 0)
    setContentView(getContentView())
    onViewReady(savedInstanceState, intent)
}
如果您对
onCreate()
(您覆盖的方法)的第二个实现感兴趣,请阅读