首次运行时,super.onCreate(savedInstanceState) 崩溃

5

由Firebase Crash Reporting捕获的异常:

异常java.lang.RuntimeException:无法启动活动 ComponentInfo{com.talmir.mickinet/com.talmir.mickinet.activities.HomeActivity}: android.content.res.Resources$NotFoundException:资源ID 0x7f080058 android.app.ActivityThread.performLaunchActivity (ActivityThread.java:2249) android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:2299) android.app.ActivityThread.access$700 (ActivityThread.java:154) android.app.ActivityThread$H.handleMessage ...

原因是android.content.res.Resources$NotFoundException:资源ID 0x7f080058 android.content.res.Resources.getValue (Resources.java:1883) android.support.v7.widget.AppCompatDrawableManager.c (SourceFile:332) android.support.v7.widget.AppCompatDrawableManager.a (SourceFile:197) android.support.v7.widget.AppCompatDrawableManager.getDrawable ...

HomeActivity.java

@Override
protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);
setContentView(R.layout.activity_home); // line 238
FirebaseCrash.log("HomeActivity");

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M)
    if (!canAccessCamera() || !canAccessExternalStorage() || !canAccessContacts())
        requestPermissions(INITIAL_PERMISSIONS, INITIAL_REQUEST);

copyRawFile(R.raw.file_receive);
// other codes...

activity_home.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:id="@+id/activity_home"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:paddingTop="@dimen/activity_vertical_margin"
        android:paddingBottom="@dimen/activity_vertical_margin"
        tools:context="com.talmir.mickinet.activities.HomeActivity"
        android:background="@color/snow">

    <fragment
            android:id="@+id/frag_list"
            class="com.talmir.mickinet.fragments.DeviceListFragment"
            android:layout_width="match_parent"
            android:layout_height="@dimen/phone_list_height">
    </fragment>

    <fragment
            android:id="@+id/frag_detail"
            class="com.talmir.mickinet.fragments.DeviceDetailFragment"
            android:layout_width="match_parent"
            android:layout_height="match_parent">
    </fragment>

</RelativeLayout>

AndroidManifest.xml

<activity
    android:name=".activities.HomeActivity"
    android:configChanges="orientation|keyboardHidden"
    android:screenOrientation="portrait"
    android:theme="@style/AppTheme"
    android:label="@string/app_name">
    <intent-filter>
        <action android:name="android.intent.action.MAIN"/>
        <category android:name="android.intent.category.LAUNCHER"/>
    </intent-filter>
</activity>

build.gradle

apply plugin: 'com.android.application'

android {
    signingConfigs {
        config {
            // my config
        }
    }
    compileSdkVersion 25
    buildToolsVersion "25.0.3"
    defaultConfig {
        applicationId "com.talmir.mickinet"
        minSdkVersion 17
        targetSdkVersion 25
        versionCode 1
        versionName "1.0"
        vectorDrawables.useSupportLibrary = true
        signingConfig signingConfigs.config
    }
    buildTypes {
        release {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            debuggable false
            jniDebuggable false
            signingConfig signingConfigs.config
            renderscriptDebuggable false
            zipAlignEnabled true
        }
    }
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
}

dependencies {
    compile 'com.android.support:appcompat-v7:25.3.1'
    compile 'com.android.support:design:25.3.1'
    compile 'com.android.support:support-v4:25.3.1'
    compile 'com.android.support:cardview-v7:25.3.1'
    compile 'com.android.support:recyclerview-v7:25.3.1'
    compile 'com.github.paolorotolo:appintro:4.1.0'
    compile 'com.android.support:support-vector-drawable:25.3.1'
    implementation 'com.google.firebase:firebase-crash:11.0.2'
}

apply plugin: 'com.google.gms.google-services'

我测试过以下内容:这个这个这个这个这个链接中的问题看起来比其他问题更接近于我的问题。

此外,同一个应用程序在API 23和API 17上都安装了(两者都是物理设备),但只有在API 17上启动时才会出现错误。

主要问题:

为什么会出现这个异常,我该如何解决它?


我认为你的activity_home.xml文件中存在错误,请粘贴该XML文件。 - Vishal Yadav
@MirjalalTalishinski 它在另一台API级别为17的设备上也会崩溃吗? - Willi Mentzel
@WilliMentzel 我编辑了这个问题。;) :) - Mirjalal
@Vishal 如果是的话,应该在第239行。 - Mirjalal
@WilliMentzel 不,我没有这样做。已经三次检查过了 :) - Mirjalal
显示剩余9条评论
2个回答

2
这个异常是我将Android Studio从Canary 5更新到Canary 6时遇到的。
我回到了Android Studio 2.3.2,并将类路径改回Gradle 2.3.2,问题就解决了。
更新:我尝试了我的三个应用程序,都遇到了同样的错误,但是按照上述方法解决了问题。

你的所有应用程序都会出现这种情况吗? - Mirjalal
我没有检查过,但我尝试了所有的解决方案,都没有起作用。而且你的异常情况和我的完全一样。请尝试这样做。 - Mohad12211
@WilliMentzel 我也曾经和你一样想法,但我尝试了所有的解决方案,都没有起作用。不过我尝试了这个方法,它有效。 - Mohad12211
1
@MirjalalTalishinski永远不要在生产环境中使用alpha版本 ;) - Willi Mentzel
1
@WilliMentzel 我现在明白了 :) 这不会再发生第二次了 :D 谢谢你)) - Mirjalal
显示剩余4条评论

1

今天我也遇到了同样的问题。经过一些研究,我发现了这个:

android.enableAapt2=false

将这行代码添加到您的 "gradle.properties" 文件中。

参考 此处

我认为这是由于 Android Studio 最新版本(3.0 Canary 6)中的一个错误导致的。

使用 AAPT2 进行增量资源处理。要启用 AAPT2,请将以下内容添加到 gradle.properties 文件中:android.enableAapt2=true

上述文本来自 Android Studio 预览版 链接。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接