扩展 AppCompatActivity 会使应用崩溃
Extending AppCompatActivity crashes the app
我正在创建一个简单的应用程序来测试 AppCompat
,当我扩展 AppCompatActivity
应用程序崩溃时,当我 运行 没有 AppCompat
的应用程序(扩展android.app.Activity
一切都保持不变),
MainActivity extends Activity
- 有效
MainActivity extends AppCompat Activity
- 崩溃
正在 android 4.4
进行测试
LogCat:
------------------------------------------------
05-01 23:03:44.916 E/dalvikvm(23031): heapsize Dalvik_dalvik_system_VMRuntime_nativeMinimumHeapSize 0
05-01 23:03:44.916 E/dalvikvm(23031): heapsize Dalvik_dalvik_system_VMRuntime_nativeMinimumHeapSize 15301176
05-01 23:03:44.966 E/dalvikvm(23031): Could not find class 'android.arch.core.internal.FastSafeIterableMap', referenced from method android.arch.lifecycle.LifecycleRegistry.<init>
05-01 23:03:44.986 E/AndroidRuntime(23031): FATAL EXCEPTION: main
05-01 23:03:44.986 E/AndroidRuntime(23031): Process: com.android.xDrawer, PID: 23031
05-01 23:03:44.986 E/AndroidRuntime(23031): java.lang.NoClassDefFoundError: android.arch.core.internal.FastSafeIterableMap
05-01 23:03:44.986 E/AndroidRuntime(23031): at android.arch.lifecycle.LifecycleRegistry.<init>(LifecycleRegistry.java:59)
05-01 23:03:44.986 E/AndroidRuntime(23031): at android.support.v4.app.SupportActivity.<init>(SupportActivity.java:47)
05-01 23:03:44.986 E/AndroidRuntime(23031): at android.support.v4.app.BaseFragmentActivityApi14.<init>(BaseFragmentActivityApi14.java:28)
05-01 23:03:44.986 E/AndroidRuntime(23031): at android.support.v4.app.BaseFragmentActivityApi16.<init>(BaseFragmentActivityApi16.java:34)
05-01 23:03:44.986 E/AndroidRuntime(23031): at android.support.v4.app.FragmentActivity.<init>(FragmentActivity.java:68)
05-01 23:03:44.986 E/AndroidRuntime(23031): at android.support.v7.app.AppCompatActivity.<init>(AppCompatActivity.java:61)
05-01 23:03:44.986 E/AndroidRuntime(23031): at com.android.xDrawer.MainActivity.<init>(MainActivity.java:49)
05-01 23:03:44.986 E/AndroidRuntime(23031): at java.lang.Class.newInstanceImpl(Native Method)
05-01 23:03:44.986 E/AndroidRuntime(23031): at java.lang.Class.newInstance(Class.java:1208)
-----------------------------------------
正在添加
vectorDrawables.useSupportLibrary = true
在app的gradls中没有解决问题
更新:
完整 gradle 文件:
apply plugin: 'com.android.application'
android {
compileSdkVersion 21
buildToolsVersion "21.1.0"
defaultConfig {
applicationId "com.mycompany.myapp"
minSdkVersion 14
targetSdkVersion 21
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
useProguard false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile "com.android.support:appcompat-v7:27.1.1"
}
Activity:
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity
{
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
}
Xml:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center">
<TextView
android:text="@string/hello_world"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
样式:
<resources>
<style name="AppTheme" parent="@style/Theme.AppCompat.Light">
</style>
</resources>
检查您是否使用 Proguard?如果是这样,您可以像下面这样自定义 Proguard 规则配置:
-keep class android.arch.** { *; }
或者完全关闭它:
debug {
minifyEnabled false
useProguard false
}
希望对你有用
已解决,问题是我有 android SDK 21
(android.jar) 和 appcompat 27.1.1
,尝试 android SDK 24,25,26,27
和 appcompat 27.1.1
但仍然没有运气,然后尝试使用 android SDK 25
和 appcompat 25.0.0
,它就像一个魅力。
希望这可以帮助任何遇到同样问题的人。
我遇到了同样的问题:启动 Activity 扩展 AppCompatActivity 时应用崩溃了。
求解:
基础应用主题:
<!-- Base application theme. -->
<style name="AppTheme" parent="android:Theme.Material.Light.DarkActionBar">
<!-- Customize your theme here. -->
<item name="android:windowBackground">@drawable/windows_background</item>
</style>
我添加了主题:
<style name="AppTheme.NoActionBar">
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
</style>
并在 AndroidManifest.xml 中为扩展 AppCompatActivity 的 Activity 应用此主题:
<activity android:name=".LoadGameActivity"
android:theme="@style/AppTheme.NoActionBar"
android:label="@string/label_LoadGameActivity"></activity>
我正在创建一个简单的应用程序来测试 AppCompat
,当我扩展 AppCompatActivity
应用程序崩溃时,当我 运行 没有 AppCompat
的应用程序(扩展android.app.Activity
一切都保持不变),
MainActivity extends Activity
- 有效
MainActivity extends AppCompat Activity
- 崩溃
正在 android 4.4
LogCat:
------------------------------------------------
05-01 23:03:44.916 E/dalvikvm(23031): heapsize Dalvik_dalvik_system_VMRuntime_nativeMinimumHeapSize 0
05-01 23:03:44.916 E/dalvikvm(23031): heapsize Dalvik_dalvik_system_VMRuntime_nativeMinimumHeapSize 15301176
05-01 23:03:44.966 E/dalvikvm(23031): Could not find class 'android.arch.core.internal.FastSafeIterableMap', referenced from method android.arch.lifecycle.LifecycleRegistry.<init>
05-01 23:03:44.986 E/AndroidRuntime(23031): FATAL EXCEPTION: main
05-01 23:03:44.986 E/AndroidRuntime(23031): Process: com.android.xDrawer, PID: 23031
05-01 23:03:44.986 E/AndroidRuntime(23031): java.lang.NoClassDefFoundError: android.arch.core.internal.FastSafeIterableMap
05-01 23:03:44.986 E/AndroidRuntime(23031): at android.arch.lifecycle.LifecycleRegistry.<init>(LifecycleRegistry.java:59)
05-01 23:03:44.986 E/AndroidRuntime(23031): at android.support.v4.app.SupportActivity.<init>(SupportActivity.java:47)
05-01 23:03:44.986 E/AndroidRuntime(23031): at android.support.v4.app.BaseFragmentActivityApi14.<init>(BaseFragmentActivityApi14.java:28)
05-01 23:03:44.986 E/AndroidRuntime(23031): at android.support.v4.app.BaseFragmentActivityApi16.<init>(BaseFragmentActivityApi16.java:34)
05-01 23:03:44.986 E/AndroidRuntime(23031): at android.support.v4.app.FragmentActivity.<init>(FragmentActivity.java:68)
05-01 23:03:44.986 E/AndroidRuntime(23031): at android.support.v7.app.AppCompatActivity.<init>(AppCompatActivity.java:61)
05-01 23:03:44.986 E/AndroidRuntime(23031): at com.android.xDrawer.MainActivity.<init>(MainActivity.java:49)
05-01 23:03:44.986 E/AndroidRuntime(23031): at java.lang.Class.newInstanceImpl(Native Method)
05-01 23:03:44.986 E/AndroidRuntime(23031): at java.lang.Class.newInstance(Class.java:1208)
-----------------------------------------
正在添加
vectorDrawables.useSupportLibrary = true
在app的gradls中没有解决问题
更新:
完整 gradle 文件:
apply plugin: 'com.android.application'
android {
compileSdkVersion 21
buildToolsVersion "21.1.0"
defaultConfig {
applicationId "com.mycompany.myapp"
minSdkVersion 14
targetSdkVersion 21
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
useProguard false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile "com.android.support:appcompat-v7:27.1.1"
}
Activity:
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity
{
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
}
Xml:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center">
<TextView
android:text="@string/hello_world"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
样式:
<resources>
<style name="AppTheme" parent="@style/Theme.AppCompat.Light">
</style>
</resources>
检查您是否使用 Proguard?如果是这样,您可以像下面这样自定义 Proguard 规则配置:
-keep class android.arch.** { *; }
或者完全关闭它:
debug {
minifyEnabled false
useProguard false
}
希望对你有用
已解决,问题是我有 android SDK 21
(android.jar) 和 appcompat 27.1.1
,尝试 android SDK 24,25,26,27
和 appcompat 27.1.1
但仍然没有运气,然后尝试使用 android SDK 25
和 appcompat 25.0.0
,它就像一个魅力。
希望这可以帮助任何遇到同样问题的人。
我遇到了同样的问题:启动 Activity 扩展 AppCompatActivity 时应用崩溃了。
求解:
基础应用主题:
<!-- Base application theme. -->
<style name="AppTheme" parent="android:Theme.Material.Light.DarkActionBar">
<!-- Customize your theme here. -->
<item name="android:windowBackground">@drawable/windows_background</item>
</style>
我添加了主题:
<style name="AppTheme.NoActionBar">
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
</style>
并在 AndroidManifest.xml 中为扩展 AppCompatActivity 的 Activity 应用此主题:
<activity android:name=".LoadGameActivity"
android:theme="@style/AppTheme.NoActionBar"
android:label="@string/label_LoadGameActivity"></activity>