【问题标题】:How to redirect to another activity with the short class name如何使用短类名重定向到另一个活动
【发布时间】:2013-08-20 08:28:11
【问题描述】:

假设我有两个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");

它不起作用。

有什么问题?

【问题讨论】:

  • 也许你可以使用类变量而不是使用字符串?
  • 你能发布你的清单文件吗?如果清单中的活动名称是“.SpinnerActivity”,请尝试使用以下命令开始:redirectToActivity(".SpinnerActivity");
  • 查看将intent.setClassName(this,dest); 更改为intent.setClassName(getApplicationContext(), dest); 是否有效。
  • @Yume117:我必须使用字符串,因为我通过用户通过 ListView 选择来获取活动名称。
  • @nbe_42:是的,在manifest中是“.SpinnerActivity”,我已经改成redirectToActivity(".SpinnerActivity")了,还是一样的错误。

标签: android


【解决方案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();
                    }
           }

【讨论】:

    【解决方案2】:
    Unable to find explicit activity class {com.app/SpinnerActivity}; have you declared this activity in your AndroidManifest.xml?
    

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

    【讨论】:

    • 因为这是一个学习android的应用程序。所以我用com.app作为包名,这有关系吗?
    猜你喜欢
    • 1970-01-01
    • 2023-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-27
    • 1970-01-01
    • 2017-10-25
    • 1970-01-01
    相关资源
    最近更新 更多