我正在编写一个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:
答案 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。所以你要做的是:
Activity
一词)。在每个源文件的顶部,您都有一行:
package Activity;
将其更改为:
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>