2012-03-24 82 views
3
<uses-sdk android:minSdkVersion="7" /> 

<application 
    android:description="@string/app_description" 
    android:icon="@drawable/icon" 
    android:label="@string/app_name" 
    android:theme="@android:style/Theme.Light" > 
    <activity 
     android:name="com.xyz.Main.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> 

安卓:活动清单中的

不能登记,而皮棉工具告诉我,我的活动没有在清单中注册,如果我尝试运行它,logcat的好心告诉我:

java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.name/com.xyz.Main.MainActivity}: java.lang.ClassNotFoundException: com.xyz.Main.MainActivity

这是我发疯,我已经重新安装了Eclipse以及更新的SDK和东西API-17级,现在我似乎无法执行我自己的应用程序。我完全不知道这里到底有什么问题,显然这个活动在manifest.xml中很好地注册了。

在此先感谢。

+0

你确定'com.xyz.Main.MainActivity'是正确的包名吗?当你说'manifest.xml'时,你的意思是'AndroidManifest.xml',对吗? – 2012-03-24 15:24:33

+0

是你的'活动'类私人?如果是这样,请将其更改为公开。 – 2012-03-24 15:27:42

+0

位于你的'AndroidManifest.xml'文件的顶部,你会看到'package =“package_name_here”'属性。你可以尝试设置你的'android:name =“。MainActivity”'或者这些行(前面的'.'基本上为你添加了包名的其余部分)。这与完成整个软件包名称的编写是相同的,但它已经到了您要重新安装SDK的地步,尝试使用P – 2012-03-24 15:30:42

回答

3

我已经得到了解决。今天,我感到有足够的动力,再次把我的手放在这个项目上,并试图将该项目移植到Linux发行版(这导致了我的结论,即Linux对于Android的发展是一种痛苦),并将其整合为“线按行“到一个新的Android项目。

我用来实现字符串-&具有特定常量和值的整数接口(例如0x00表示“可见”)。不幸的是,Android似乎遇到了界面和活动类的麻烦。删除接口并在常量上创建静态引用使模拟器摆脱了这个问题。

public class MyActivity extends Activity implements Options // [...] 
Btn.setVisibility(VISIBLE); // bad idea 

public class MyActivity extends Activity // [...] 
Btn.setVisibility(Options.VISIBLE); // good idea 

希望这会帮助至少有人搜索这个问题。

4

您的软件包名称包含大写字母(“Main”),这可能是一个问题。看看这个问题code.google.com上:

http://code.google.com/p/android/issues/detail?id=27529

+0

这也是我的猜想。我遇到了同样的问题。您可以做一个快速修复并禁用项目中的检查,直到它们得到修复。这就是我们正在做的。 – 2012-03-28 14:55:30

+0

没有为我工作。只将包名更改为小写字母,根本没有发现任何变化。 – 2012-04-08 15:43:56

+0

**写入软件包名称不会产生此错误,因为我已经写入软件包名称仅限于Caps,它正在工作...... ** – GAMA 2012-04-23 10:10:58

1

我有同样的问题:Lint无法识别AndroidManifest.xml中明显正确的描述。

然后我改变了包名称只有一个小的字母和字母。

Eclipse中的重构方案并没有自动将包名称自动重命名,因此我必须手动修复一些情况,例如重新键入清单文件中的包名称。

当应用程序的所有部分最后都提到了新的软件包名称时,Lint也终于满意了。

因此,只有在您喜欢麻烦的情况下,才能在包名中使用大写字母和数字。

我想称这是一个错误,或者至少是一个烦恼,因为包名应该被允许遵循Java规则。

1

如果发生这种情况,请更正“包装”名称(如其他人所述),然后确保重新运行“Android Lint”。

警告将一直存在,直到Lint在纠正错误后再次运行。

0

由于我的一个愚蠢的错误,我得到了同样的错误信息。我花了一段时间才能找到它,所以以防万一别人犯同样的错误,并绊倒在此线程,这里就是我做错误的:

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

    <uses-sdk android:minSdkVersion="7" 
       android:targetSdkVersion="14"/> 

    <application 
     android:icon="@drawable/icon" 
     android:label="@string/app_name"> 
    </application> 

    <activity 
     android:name="com.example.DogsDropDown.MainActivity" 
     android:label="@string/app_name" 
     android:launchMode="singleTop"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN"/> 
      <category android:name="android.intent.category.LAUNCHER"/> 
     </intent-filter> 
    </activity> 

</manifest> 

,一旦你看到它很明显 - 我已把它放在在<应用程序>规范之外的<活动>规范,而不是在其内部。