0

假设我有两个 Activity(在同一个包下):

HomeActivity(启动器活动)

SpinnerActivity

他们俩都在AndroidManifest.xml.

现在我尝试创建一个方法来实现活动跳转:

private void redirectToActivity(String dest) {
    Intent intent = new Intent();
    intent.setClassName(this,dest);
    startActivity(intent);
}

我把它叫做HomeActivity

redirectToActivity("SpinnerActivity");

但我得到了这个错误:

找不到明确的活动类 {com.app/SpinnerActivity};您是否在 AndroidManifest.xml 中声明了此活动?

我试图添加这一行:

intent.setPackage("com.app");

这没用。

有什么问题?

4

2 回答 2

1

// 全局定义或在 OnCreate() 方法中定义

// 如果您的所有 Activity 都在同一个包中,那么这种方法将起作用。

final String packageName = this.getClass().getPackage().getName();
final Context context = this;

// call your method like this i.e SpinnerActivity
         private void redirectToActivity(String dest) {

                  try {
                        Class c = Class.forName(packageName + "." + dest);
                        startActivity(new Intent(context, c));
                    } catch (ClassNotFoundException e) {
                        Toast.makeText(context, String.valueOf(e), 5000).show();
                    }
           }
于 2013-08-20T08:42:52.173 回答
1
Unable to find explicit activity class {com.app/SpinnerActivity}; have you declared this activity in your AndroidManifest.xml?

你的包名很奇怪。我习惯了“com.company.appname”之类的东西,而你得到了 com.app/SpinnerActivity。你试过朝那个方向思考吗?

于 2013-08-20T08:36:43.503 回答