Вам нужно использовать тему Theme.AppCompat (или потомок) с этим действием после обновления до последних версий. - PullRequest
0 голосов
/ 21 апреля 2020

У меня есть приложение, которое работало несколько месяцев go, которое я только что скомпилировал после обновления различных файлов реализации последними версиями. Теперь, когда я пытаюсь запустить его, я получаю «Вам нужно использовать тему Theme.AppCompat (или потомок) с этим действием». Ну, я знаю, что это значит, но в данном случае это именно то, что я делаю. Очевидно, что-то изменилось в одном из этих файлов реализации (я полагаю, androidX), и он видит вещи иначе, чем раньше.

В любом случае, здесь есть соответствующие биты информации. Кто-нибудь видит, что мне нужно изменить?

<application
            android:name=".MyApplication"
            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/Theme.AppCompat"
            tools:ignore="AllowBackup,GoogleAppIndexingWarning">
        <activity
                android:name=".ui.StartScreenActivity"
                android:configChanges="orientation|keyboardHidden|screenSize"
                android:label="@string/title_activity_start_screen"
                android:theme="@style/Theme.AppCompat">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
Caused by: java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity.
        at androidx.appcompat.app.AppCompatDelegateImpl.createSubDecor(AppCompatDelegateImpl.java:696)
        at androidx.appcompat.app.AppCompatDelegateImpl.ensureSubDecor(AppCompatDelegateImpl.java:659)
        at androidx.appcompat.app.AppCompatDelegateImpl.setContentView(AppCompatDelegateImpl.java:552)
        at androidx.appcompat.app.AppCompatActivity.setContentView(AppCompatActivity.java:161)
        at com.android.myapp.ui.StartScreenActivity.onCreate(StartScreenActivity.kt:32)

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        window?.decorView?.systemUiVisibility = View.SYSTEM_UI_FLAG_FULLSCREEN
        actionBar?.hide()

        setContentView(com.android.myapp.R.layout.activity_start_screen)
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
             xmlns:tools="http://schemas.android.com/tools"
             android:layout_width="match_parent"
             android:layout_height="match_parent"
             android:background="@drawable/splash"
             tools:context=".ui.StartScreenActivity">
</FrameLayout>

Как видите, я уже использую Theme.AppCompat как для приложения, так и для Activity. Не уверен, что еще я мог сделать. Я попытался перезапустить Android Studio и другие вещи безрезультатно.

Есть мысли?

Ответы [ 2 ]

0 голосов
/ 21 апреля 2020

У меня была такая же проблема, похоже, ошибка в версии MaterialComponents 1.1.0. Я обновил до com.google.android.material:material:1.2.0-alpha06 и решил проблему

0 голосов
/ 21 апреля 2020

попробуйте удалить actionBar? .Hide () из своего кода и используйте:

Theme.AppCompat.Light.NoActionBar вместо Theme.AppCompat в качестве стиля деятельности

...