Android无法启动Activity - java.lang.RuntimeException:无法启动活动ComponentInfo

时间:2015-03-17 03:25:21

标签: java android android-studio

这是一个真正让我感到困扰的问题,每当我尝试启动应用程序的主要活动时,我都会在LogCat中收到错误:

  

java.lang.RuntimeException:无法启动活动ComponentInfo {me.kworden.atic / me.kworden.atic.MainActivity}:android.content.res.Resources $ NotFoundException:Resource ID#0x7f0c00a9

堆栈跟踪说我的super.onCreate(savedInstanceState)方法中的问题是onCreate(),这让我感到很沮丧,因为我无法控制超类方法。

我使用的内容布局只是LinearLayout,所以我认为你们都不需要看到我的xml文件,尽管我会根据请求发布。

我在SO上看到了其他类似的问题,但唯一的答案是“清理/重建项目”,这对我没有任何帮助。我正在使用Android Studio ver。 1.1.0如果这是一个已知问题,但我还没有看到任何已知的错误。

这是我的MainActivity,我已经删除了大部分代码以便查明问题,但现在似乎super.onCreate是罪魁祸首;尽管是非常准确的,我的应用程序仍然无法启动(即我得到“不幸的是,应用已停止。”)。

import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;

public class MainActivity extends ActionBarActivity
{
    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        // Create the activity and set the main content view //
        super.onCreate(savedInstanceState); // This is line 17, per the stack trace //
        setContentView(R.layout.activity_main);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu)
    {
        // Inflate the main menu to the toolbar //
        getMenuInflater().inflate(R.menu.menu_main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item)
    {
        int id = item.getItemId();

        if(id == R.id.action_settings)
        {
            return true;
        }

        return super.onOptionsItemSelected(item);
    }
}

这是我的完整堆栈跟踪:

03-16 23:16:33.572    1494-1494/me.kworden.atic E/AndroidRuntime﹕ FATAL EXCEPTION: main
    Process: me.kworden.atic, PID: 1494
    java.lang.RuntimeException: Unable to start activity ComponentInfo{me.kworden.atic/me.kworden.atic.MainActivity}: android.content.res.Resources$NotFoundException: Resource ID #0x7f0c00a9
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2298)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360)
            at android.app.ActivityThread.access$800(ActivityThread.java:144)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1278)
            at android.os.Handler.dispatchMessage(Handler.java:102)
            at android.os.Looper.loop(Looper.java:135)
            at android.app.ActivityThread.main(ActivityThread.java:5221)
            at java.lang.reflect.Method.invoke(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:372)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)
     Caused by: android.content.res.Resources$NotFoundException: Resource ID #0x7f0c00a9
            at android.content.res.Resources.getValue(Resources.java:1233)
            at android.content.res.Resources.getDrawable(Resources.java:756)
            at android.content.Context.getDrawable(Context.java:402)
            at com.android.internal.policy.impl.PhoneWindow.generateLayout(PhoneWindow.java:3514)
            at com.android.internal.policy.impl.PhoneWindow.installDecor(PhoneWindow.java:3561)
            at com.android.internal.policy.impl.PhoneWindow.getDecorView(PhoneWindow.java:1916)
            at android.support.v7.app.ActionBarActivityDelegateBase.onCreate(ActionBarActivityDelegateBase.java:151)
            at android.support.v7.app.ActionBarActivity.onCreate(ActionBarActivity.java:123)
            at me.kworden.atic.MainActivity.onCreate(MainActivity.java:17)
            at android.app.Activity.performCreate(Activity.java:5933)
            at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1105)
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2251)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360)
            at android.app.ActivityThread.access$800(ActivityThread.java:144)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1278)
            at android.os.Handler.dispatchMessage(Handler.java:102)
            at android.os.Looper.loop(Looper.java:135)
            at android.app.ActivityThread.main(ActivityThread.java:5221)
            at java.lang.reflect.Method.invoke(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:372)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)

4 个答案:

答案 0 :(得分:2)

如果将来有人绊倒我,我想确保你能得到答案......

问题是我的样式中使用了仅适用于Material和Android 5.0+的某些标签。所以我改为创建一个res/values-v21/styles.xml文件夹并在其中放入适当的设置。这解决了这个问题。

答案 1 :(得分:0)

删除setContentView(R.layout.activity_main);方法

删除此方法后如果成功运行,则无法生成布局ID。

并确保在R.java文件

中生成或不显示您的布局ID

答案 2 :(得分:0)

打开清单文件检查应用程序包和活动。包含或不包含在文件中,还检查申请方式

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="yourapplicationpackage" >
       <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" 
        >
        <activity
            android:name=".MainActivity"
            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>

答案 3 :(得分:0)

如果您在XML文件上使用标签<view>,只需将标签<view>更改为<View>