ActivityNotFoundException?

jpa*_*ahn 15 android android-intent

ActivityNotFoundException在以下代码中得到一个:

Main.java

Intent intent = new Intent();
     intent.setAction("com.test.app.TEST");
     startActivity(intent); // ActivityNotFoundException
Run Code Online (Sandbox Code Playgroud)

的Manifest.xml

<activity android:name=".MainActivity" android:theme="@android:style/Theme.Dialog">
        <intent-filter>
            <action android:name="com.test.app.TEST" />
        </intent-filter>
</activity>
Run Code Online (Sandbox Code Playgroud)

Tom*_*ace 25

我也遇到过这个问题,正如jpahn所描述的那样简洁.

前线的时期对我没有任何帮助.

即使正是这样(包括编辑在内的原始问题的副本),我仍然会得到ActivityNotFoundException.

Main.java

Intent intent = new Intent();
 intent.setAction("com.test.app.TEST");
 startActivity(intent); // ActivityNotFoundException
Run Code Online (Sandbox Code Playgroud)

的Manifest.xml

<activity android:name=".MainActivity" android:theme="@android:style/Theme.Dialog">
    <intent-filter>
        <action android:name="com.test.app.TEST" />
    </intent-filter>
</activity>
Run Code Online (Sandbox Code Playgroud)

经过多次试错后,只需将其添加到清单中的intent-filter即可解决此问题:

<category android:name="android.intent.category.DEFAULT" />
Run Code Online (Sandbox Code Playgroud)

所以最终的清单文件包含:

<activity android:name=".MainActivity" android:theme="@android:style/Theme.Dialog">
    <intent-filter>
        <action android:name="com.test.app.TEST" />
        <category android:name="android.intent.category.DEFAULT" />
    </intent-filter>
</activity>
Run Code Online (Sandbox Code Playgroud)


Bad*_*llz 9

确保在aplication中的manifest.xml中声明您的活动:

<application>
    <activity android:name=".YourNewActivity"/>
</application>
Run Code Online (Sandbox Code Playgroud)

要开始新的活动:

Intent intent = new Intent(main.this, YourNewActivity.class);
startActivity(intent);
Run Code Online (Sandbox Code Playgroud)

其中主要代表的当前活动,


小智 9

将活动类从一个包移动到另一个包后,我收到此错误.清洁构建解决了它(项目 - >清洁).


Mud*_*sir 5

添加一个.(点)在Android Manifest中的活动名称之前.所以它应该是android:name =".WordsToSpeakMainActivity"

  • 是的,这是一个要求.属性值应该是完全限定的类名(例如,"com.myapp.myexample.project.MyActivity").但是,作为简写,如果名称的第一个字符是句点(例如,".MyActivity"),则它将附加到<manifest>元素中指定的包名称.有关详细信息,请参阅http://developer.android.com/guide/topics/manifest/activity-element.html#nm. (3认同)

the*_*eXs 3

为了安全起见,您还可以像这样调用您的新活动:

Intent intent = new Intent();
intent.setClass(this, THECLASSNAME);
startActivity(intent); // 
Run Code Online (Sandbox Code Playgroud)

但是,您必须将活动添加到 androidmanifest - 并编写一个 . 在它前面,例如

<activity android:name=".YOURACTIVITYNAME"></activity>
Run Code Online (Sandbox Code Playgroud)