无法找到明确的 activity class 异常,即使在项目清单中声明了 class
Unable to find explicit activity class exception even if the class is declared in the projects manifest
我把我的项目变成了一个库。该项目只显示空白 activity。我将这个库导入到另一个项目中,我想通过项目主 activity 调用它,但是即使我已经在项目清单中声明了 activity,我仍然会收到下面的错误。
Unable to find explicit activity class {com.package.name/com.package.name.BatibotActivity}; have you declared this activity in your AndroidManifest.xml?
这是我的项目清单
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="pak.paks.pocket" >
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme" >
<activity android:name=".MainActivity" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name="com.package.name.BatibotActivity"
android:screenOrientation="portrait" >
</activity>
</application>
</manifest>
我做错了什么?
编辑:
这是我的 BatibotActivity
package com.package.name;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
public class BatibotActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_batibot);
}
}
EDIT2
这是调用 BatibotActivity
的 class
package pak.paks.pocket;
import android.content.ComponentName;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void submitBtn(View view) {
Intent intent = new Intent(android.content.Intent.ACTION_VIEW);
intent.setComponent(new ComponentName("com.package.name",
"com.package.name.BatibotActivity"));
startActivity(intent);
}
}
请检查您的清单标签的包属性。
<manifest package="com.package.name">
<application>
...
</application>
</manifest>
根据日志消息,您正在尝试打开 com.package.name/com.package.name.BatibotActivity
,但在 AndroidManifest.xml 上注册的 Activity 是 pak.paks.pocket/com.package.name.BatibotActivity
。
ComponentName 的第一个参数是包名。这是正确的代码:
Intent intent = new Intent(android.content.Intent.ACTION_VIEW);
intent.setComponent(new ComponentName("pak.paks.pocket", "com.package.name.BatibotActivity"));
startActivity(intent);
我把我的项目变成了一个库。该项目只显示空白 activity。我将这个库导入到另一个项目中,我想通过项目主 activity 调用它,但是即使我已经在项目清单中声明了 activity,我仍然会收到下面的错误。
Unable to find explicit activity class {com.package.name/com.package.name.BatibotActivity}; have you declared this activity in your AndroidManifest.xml?
这是我的项目清单
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="pak.paks.pocket" >
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme" >
<activity android:name=".MainActivity" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name="com.package.name.BatibotActivity"
android:screenOrientation="portrait" >
</activity>
</application>
</manifest>
我做错了什么?
编辑:
这是我的 BatibotActivity
package com.package.name;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
public class BatibotActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_batibot);
}
}
EDIT2 这是调用 BatibotActivity
的 classpackage pak.paks.pocket;
import android.content.ComponentName;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void submitBtn(View view) {
Intent intent = new Intent(android.content.Intent.ACTION_VIEW);
intent.setComponent(new ComponentName("com.package.name",
"com.package.name.BatibotActivity"));
startActivity(intent);
}
}
请检查您的清单标签的包属性。
<manifest package="com.package.name">
<application>
...
</application>
</manifest>
根据日志消息,您正在尝试打开 com.package.name/com.package.name.BatibotActivity
,但在 AndroidManifest.xml 上注册的 Activity 是 pak.paks.pocket/com.package.name.BatibotActivity
。
ComponentName 的第一个参数是包名。这是正确的代码:
Intent intent = new Intent(android.content.Intent.ACTION_VIEW);
intent.setComponent(new ComponentName("pak.paks.pocket", "com.package.name.BatibotActivity"));
startActivity(intent);