Ничего не отображается при использовании одного BaseActivity во всем проекте - PullRequest
0 голосов
/ 08 января 2020

Я сделал один BaseActivity для всех действий, чтобы настроить заголовки и другие вещи для всех, но при запуске приложения ничего не отображается.

Вот код для 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?)
    }

и вот MainActivity :

    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>

Что я здесь не так делаю?

1 Ответ

2 голосов
/ 08 января 2020

Поскольку в BaseActivity вы переопределяете неправильно onCreate(), то есть onCreate(savedInstanceState: Bundle?, persistentState: PersistableBundle?).

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

Вместо вышеуказанной версии onCreate() вам необходимо переопределить onCreate(savedInstanceState: Bundle?), как показано ниже

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

Подробнее на Какое использование второй реализации метода onCreate в Android Деятельности? , если вас интересует вторая реализация onCreate() (метод, который вы переопределили)

...