【问题标题】:How do I resolve the ActivityNotFoundException?如何解决 ActivityNotFoundException?
【发布时间】:2012-05-08 10:46:39
【问题描述】:

我在我的 Android 应用程序中遇到了 ActivityNotFoundException。这是我用来调用活动的代码 sn-p:

Intent i = new Intent();
i.putExtra("NAME", username.getText().toString());
i.setClassName(getPackageName(), SecondActivity.class.getSimpleName());
startActivity(i);

我的 AndroidManifest.xml 看起来像这样

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

<uses-sdk android:minSdkVersion="10" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.CAMERA"/>

<application android:icon="@drawable/ic_launcher" android:label="@string/app_name" >
    <activity android:name=".firstActivity" 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:label="@string/app_name" android:name=".SecondActivity" />
    <activity android:label="@string/app_name" android:name=".WelcomeActivity" />
</application>

</manifest>

当我按意图执行代码 sn-p 时,出现以下异常。

E/AndroidRuntime(731): android.content.ActivityNotFoundException: 找不到明确的活动类 {com.rangde/WelcomeActivity}; 您是否在 AndroidManifest.xml 中声明了此活动?

谁能告诉我我做错了什么?

【问题讨论】:

    标签: android android-intent


    【解决方案1】:
       //set your classname here
      Intent i = new Intent(firstActivity.this, SecondActivity.class);
       i.putExtra("NAME", username.getText().toString());
    startActivity(i);
    

    【讨论】:

    • Jackson - 谢谢 - 但为什么 setClassName 不像我定义的那样工作?
    【解决方案2】:

    这样称呼你的 SecondActvity

    Intent i = new Intent(this,SecondActivity.class);
    i.putExtra("NAME", username.getText().toString());
    startActivity(i);
    

    【讨论】:

      【解决方案3】:

      使用这个

       String packageName = this.getPackageName();
       i.setClassName(packageName ,packageName  + "." + SecondActivity.class.getSimpleName());
      

      而不是

      i.setClassName(getPackageName(), SecondActivity.class.getSimpleName());
      

      【讨论】:

      • 您在第二个参数中缺少完整的活动路径,因此在第二个活动中传递包名称 + 活动名称
      【解决方案4】:

      而不是写

      i.setClassName(getPackageName(), SecondActivity.class.getSimpleName());
      

      试试

      i.setClassName(getPackageName(), SecondActivity.class.getName());
      

      SecondActivity.class.getSimpleName() 仅返回类的名称。

      如果你写 SecondActivity.class.getName() 得到完全限定的类名(带有包名)

      【讨论】:

        【解决方案5】:
        Intent intent = new Intent().setClass(Class1.this, Class2.class);
        
        i.putExtra("NAME", username.getText().toString());
        
        startActivity(intent);
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2016-03-04
          • 1970-01-01
          • 1970-01-01
          • 2011-05-06
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多