如何解决:“你需要在这个活动中使用Theme.AppCompat主题(或后代)”

时间:2017-09-21 05:02:16

标签: android alertdialog appcompatactivity image-viewer

View imageOverlayView = 
LayoutInflater.from(getApplicationContext()).
inflate(R.layout.layout_image_overlay, null);

new ImageViewer.Builder(getApplicationContext(), imageURLs)
               .setStartPosition(0)
               .hideStatusBar(false)
               .setOverlayView(imageOverlayView)
               .show();

我正在使用此ImageView构建器在全屏视图中加载图片,但我在编译时遇到上述错误。我使用的活动从AppCompatActivity扩展而来。我也尝试从Activity扩展活动,它不起作用。

非常感谢您在这件事上的时间和帮助。

3 个答案:

答案 0 :(得分:1)

错误:

You need to use a Theme.AppCompat theme (or descendant) with this activity

表示您需要为从AppCompat主题派生的活动使用样式。它通常在res/values/styles.xml。如果你没有创建这样的东西:

<resources>

  <!-- Base application theme. -->
  <style name="AppTheme" parent="Theme.AppCompat">
    <!-- Customize your theme here. -->
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
  </style>

</resources>

然后,将其用于您的活动,方法是将其添加到带有android:theme="@style/AppTheme"的AndroidManifest.xml中(请阅读评论):

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.sample.testcode">

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

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

    <!-- Or you can use specific theme for the activity -->
    <activity
        android:name=".anotherActivity"
        android:label="@string/app_name" >
        android:theme="@style/AppTheme" >
    </activity>

  </application>

</manifest>

答案 1 :(得分:0)

.hideStatusBar(假)

正在创建您的问题。

您必须确保AppTheme具有已定义的状态和工具栏,并且活动使用主题。

默认情况下,Android Studio会生成基本主题。

答案 2 :(得分:0)

您在代码部分(hideStatusBar)中使用了AppCompat作为主题,但您在manifest或style.xml中使用了另一个主题。不一致,因为你在两个地方使用不同的主题所以它说你需要使用它。