使用Activity替换AppCompatActivity时强制关闭

时间:2016-01-03 08:24:45

标签: android android-studio android-appcompat

我在Eclipse中有一个旧项目,我将其导入Android Studio以使用Material Design重建它。 我做了所有事情......

配置build.gradle和依赖项:

ObjectId("5349b4ddd2781d08c09890f4").getTimestamp()

和样式:

apply plugin: 'com.android.application'

android {
    compileSdkVersion 22
    buildToolsVersion "22.0.1"

    defaultConfig {
        applicationId "com.mhrz.Minesweeper"
        minSdkVersion 8
        targetSdkVersion 22
        versionCode 1
        versionName "1.0"
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
        }
    }
}
dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:22.1.1'
    compile 'com.android.support:cardview-v7:+'
}

这是Manifest:

<resources>

    <!-- Base application theme. -->
    <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
        <item name="colorPrimary">#1E9618</item>
        <item name="colorPrimaryDark">#146310</item>
        <item name="colorAccent">#1E9618</item>
    </style>

</resources>

并且CardView运行良好。

问题是应用程序正常运行并给我Holo Design:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="com.mhrz.Minesweeper"
      android:versionCode="1"
      android:versionName="1.0">
    <application android:icon="@drawable/icon" android:label="@string/app_name">
        <activity android:name=".MinesweeperGame"
                  android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
</manifest> 

但是我想要Material并且我获得了FC:

public class MinesweeperGame extends Activity {

使用此日志:

public class MinesweeperGame extends AppCompatActivity {

哪里出错?如何解决?

1 个答案:

答案 0 :(得分:3)

Android系统不知道您要将替代主题用于应用程序(例如您的AppTheme),直到您在AndroidManifest.xml文件中的应用程序或活动属性中定义它。

您需要将android:theme="@style/AppTheme"属性添加到<application>中的AndroidManifest.xml标记,如下所示:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="com.mhrz.Minesweeper"
      android:versionCode="1"
      android:versionName="1.0">
    <application android:icon="@drawable/icon"
                 android:label="@string/app_name"
                 android:theme="@style/AppTheme">
        <activity android:name=".MinesweeperGame"
                  android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
</manifest>