按照官網寫的第一個APP,出現了You need to use a Theme.AppCompat theme (or descendant) with this activity問題
2018年10月08日 19:10:08 Xia_Leon 閱讀數:173
版權聲明:文章版權歸做者全部,轉載請務必註明出處。 https://blog.csdn.net/Xia_Leon/article/details/82972154
這是我第一次根據Android官網指導寫的APP,連接以下:java
Start Another Activityandroid
每一步都嚴格參照了官網指導,一步一步敲代碼、運行,結果報了以下錯誤:app
-
10-08 18:08:40.878 18503 18503 E AndroidRuntime: Caused by: java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity.
-
10-08 18:08:40.878 18503 18503 E AndroidRuntime: at android.support.v7.app.AppCompatDelegateImplV9.createSubDecor(AppCompatDelegateImplV9.java:354)
-
10-08 18:08:40.878 18503 18503 E AndroidRuntime: at android.support.v7.app.AppCompatDelegateImplV9.ensureSubDecor(AppCompatDelegateImplV9.java:323)
-
10-08 18:08:40.878 18503 18503 E AndroidRuntime: at android.support.v7.app.AppCompatDelegateImplV9.setContentView(AppCompatDelegateImplV9.java:284)
-
10-08 18:08:40.878 18503 18503 E AndroidRuntime: at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:139)
-
10-08 18:08:40.878 18503 18503 E AndroidRuntime: at com.huawei.anrdemo.DisplayMessageActivity.onCreate(DisplayMessageActivity.java:13)
-
10-08 18:08:40.878 18503 18503 E AndroidRuntime: at android.app.Activity.performCreate(Activity.java:7372)
-
10-08 18:08:40.878 18503 18503 E AndroidRuntime: at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1218)
-
10-08 18:08:40.878 18503 18503 E AndroidRuntime: at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3147)
-
10-08 18:08:40.878 18503 18503 E AndroidRuntime: ... 9 more
-
本地環境: Android Studio 3.0.1版本,APP 的 Gradle version是4.1,Android Plugin Version是3.0.1,Compile SDK Version是API 26,Min SDK Version是21,Target SDK Version是API 26,其他參數都是默認。post
首先,這個問題我沒有Google,也沒有去百度查,只從其報錯上思考了下,意思是說你的這個activity須要使用一個Theme.AppCompat主題或descendant(沒有去查這個descendant是什麼意思)this
既然不懂descendant是什麼意思,那姑且就嘗試下 Theme.AppCompat 吧spa
因爲官網定義的這個 DisplayMessageActivity 繼承的是 AppCompatActivity,而後我就嘗試在 AndroidManifest.xml 裏面將 DisplayMessageActivity 的定義增長了一個屬性 android:theme="@style/Theme.AppCompat",從新運行後果真成功。因而本身得出這個結論:.net
若是 activity 繼承的是 AppCompatActivity,那麼它在 AndroidManifest.xml 裏面須要設置一個 Theme.AppCompat 主題。code
那若是 activity 不繼承 AppCompatActivity 呢,而後我又把 DisplayMessageActivity 的定義改爲了 extends Activity,並把AndroidManifest裏面的 Theme.AppCompat 去掉,一樣能夠正常運行。orm
奇怪的是,明明按照官網一步一步敲的代碼,爲何官網沒有指出這裏的問題?
若是知道這個緣由的大神,還請留言討論,謝謝。