android中的清单错误(错误:无法实例化活动ComponentInfo)

时间:2014-01-03 19:05:25

标签: java android android-manifest

我正在编写一个Android应用程序,突然间它从清单中收到错误,应用程序不再出现了! 我搜索了很多,我尝试了很多东西,但我不知道问题是什么。我把清单类放在这里。 谁能帮我这个? 提前致谢

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.ruby"
android:versionCode="1"
android:versionName="1.0" >

<uses-sdk
    android:minSdkVersion="8"
    android:targetSdkVersion="18" />

<application
    android:allowBackup="true"
    android:icon="@drawable/icon"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >
    <activity
        android:name="Activity.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>
    <activity android:name="Activity.ToolsActivity" />
    <activity android:name="Activity.AboutActivity" />
</application>
</manifest>

编辑:添加了MainActivity源

MainActivity.java

package Activity;

import com.example.ruby.R;
import android.app.Activity;
//rest of imports

    public class MainActivity extends Activity {

         private Button ProductBtn;
         //rest of variables

         @Override
         protected void onCreate(Bundle savedInstanceState) {
             super.onCreate(savedInstanceState);
             setContentView(R.layout.activity_main);

             //rest of the code
         }
    //rest of the code
    }

这是logcat:

Error logcat

5 个答案:

答案 0 :(得分:1)

删除显示在MainActivity,ToolsActivity和AboutActivity前面的Activity字词 - 而不是:

android:name="Activity.MainActivity"

使用

android:name=".MainActivity"

与ToolsActivity和AboutActivity相同。

来自docs for android:name:

  

实现活动的类的名称,Activity的子类。属性值应该是完全限定的类名(例如,“com.example.project.ExtracurricularActivity”)。 但是,作为简写,如果名称的第一个字符是句点(例如“.ExtracurricularActivity”),则会将其附加到元素中指定的包名称。

修改

好的,问题在于你的包名。所有源文件都驻留在名为Activity的包中,因此您有Activity.MainActivity等。但是在清单中,您将包指定为com.example.ruby。

按照惯例,包名称应采用com.companyname.applicationname格式,在您的情况下为com.example.ruby。所以你要做的是:

  1. 保持您的清单不变,无需更改任何内容(当然,除非在我的原始帖子中删除活动前面的Activity一词)。
  2. 将源文件(MainActivity.java,ToolsActivity.java等)所在的包名称从Activity更改为com.example.ruby(注意它与清单中的相同)。
  3. 在每个源文件的顶部,您都有一行:

    package Activity;
    
  4. 将其更改为:

        package com.example.ruby;
    

    详细了解包here

答案 1 :(得分:1)

如果这是您的整个清单文件,那么您就错过了

</manifest>

底部的结束标记。

答案 2 :(得分:0)

对于name属性的活动标记,您应该提供完整的文件路径,或者相对于包文件路径(如果是相同的包)

<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>
<activity android:name=".ToolsActivity" />
<activity android:name=".AboutActivity" />

答案 3 :(得分:0)

我相信您已将Activity附加到活动标记上的android:name属性:

<activity
    android:name="Activity.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>

将android:name更改为“MainActivity”。

如果Activity的名称与清单标记中package属性中指定的包不在同一个包中,请指定包,如下所示:“com.example.MainActivity”

乔纳森

答案 4 :(得分:0)

异常说,ClassNotFoundException并且找不到包含名称的MainActivity,因此进行了一些更改,它现在可以正常工作:          

<uses-sdk
    android:minSdkVersion="8"
    android:targetSdkVersion="18" />

<application
    android:allowBackup="true"
    android:icon="@drawable/icon"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >
    <activity

        android:name="com.example.ruby.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>
    <activity android:name="Activity.ToolsActivity" />
    <activity android:name="Activity.AboutActivity" />
</application>
</manifest>