zoukankan      html  css  js  c++  java
  • Android中的"Unable to start activity ComponentInfo"或者"Unable to instantiate activity ComponentInfo"的错误

                                                   Android中的"Unable to start activity ComponentInfo"的错误

         最近在做一款音乐播放器的时候,然后在调试的过程中发现一直报这个错误"Unable to start activity ComponentInfo",从字面的意思看是无法启动某个activity组件,但是看了manifest文件,所有的activity组件都已经注册过了,为什么会报这种错误?后来发现原来是注册路径出了问题,最开始的代码是这样的:

    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package
    ="com.music"
    android:versionCode
    ="1"
    android:versionName
    ="1.0">
    <uses-sdk android:minSdkVersion="5" />

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

    <activity android:name=".MainActivity">
    <intent-filter>
    <action android:name="android.intent.action.MAIN"/>
    <category android:name="android.intent.category.LAUNCHER"/>
    </intent-filter>
    </activity>
    </application>
    </manifest>

     对于MainActivity这个组件,程序启动的时候寻找它的时候,根据包的路径"package="com.music"加上".MainActivity"就是

    "com.music.MainActivity",但是在工程中MainActivity是在"com.music.activity"这个包下,显然路径就是错的,因此会报无法找到某个组件的错误。因此更改组件的注册路径就可以解决这个问题:

       可以将<activity android:name=".MainActivity">

       改成其相对路径

      <activity android:name=".activity.MainActivity">

      或者也可以直接用绝对路径

      <activity android:name="com.music.activity.MainActivity">

    注意:在注册组件的时候,如果在名称前面加了点'.',则表示该组件的路径是package的路径加上组件名,比如package='com.music',<activity android:name='.MainActivity'></activity>,则其完整路径为'com.music.MainActivity'。

    如果没有加点,则表示绝对路径,如<activity android:name="com.music.activity.MainActivity">。

    有一种特殊情况是,如果要注册的activity在当前package的根目录下,则前面的点'.'可写可不写。但是如果是在package包的子包下,如package='com.music',而MainActivity的绝对路径为'com.music.activity.MainActivity',则

    <activity android:name=".activity.MainActivity">中的".activity.MainActivity"前面的点'.'不能省略。

  • 相关阅读:
    nginx文件类型错误解析漏洞
    js 获取URL中的参数并转换为对象
    postman
    php curl参数详解
    php 两变量值互换 方法
    PHP 命名空间与spl_autoload_register() 自动加载机制
    php命名大小问题
    PHP实现冒泡排序
    使用 PHPStorm + Xdebug 实现断点调试(二)
    TSPL学习笔记(2):过程和变量绑定
  • 原文地址:https://www.cnblogs.com/dolphin0520/p/2271922.html
Copyright © 2011-2022 走看看