【问题标题】:Creating Intent using an ArrayList使用 ArrayList 创建 Intent
【发布时间】:2018-07-24 18:41:32
【问题描述】:

所以我有一个 ArrayList,我想使用这段代码(在 ListAdapter 类中)创建意图和切换活动:

for (int i = 0; i <= activityList.size(); i++){

    if (position == i){
        Intent intent = new Intent(context, (activityList.get(i).getName()).class);
        context.startActivity(intent);
    }
}

我在 .class 周围收到“预期标识符”错误。

我确实有一段工作代码,可以满足我的要求,但我必须在此处指定类(这不是我想要的):

if (position == 0) {
    Intent intent = new Intent(context, NextActivity.class);
    context.startActivity(intent);
}

不完全确定为什么第一段代码不起作用。任何帮助将不胜感激。

【问题讨论】:

  • 1) 我认为您不需要 = 登录
  • 是的,它是一个字符串列表。引号搞砸了?
  • 呃……是的。因为 NextActivity 不是字符串......它是一个文件名。
  • 啊,不知道为什么我没想到。谢谢,那我去改一下

标签: android android-intent arraylist start-activity


【解决方案1】:

你需要传递 Class 类型作为 Intent 的第二个参数,你正在使用的地方

Intent intent = new Intent(context, (activityList.get(i).getName()).class);

在这种情况下,您需要List&lt;Class&gt; 喜欢

List<Class> activityList = Arrays.asList(ActivityA.class, ActivityB.class, ActivityC.class);

像这样使用它:

Intent intent = new Intent(context, activityList.get(i));

我建议将您的 List&lt;String&gt; 更改为 List&lt;Class&gt;

【讨论】:

  • 你找到解决方案了吗?
【解决方案2】:

完成这项工作的最简单方法是将您的字符串转换为类。这是执行此操作的代码-

for (int i = 0; i <= activityList.size(); i++){
    if (position == i){
        String activity = "YourPackageName."+arrayList.get(i).getName();
        Intent intent = null;

        try {
            intent = new Intent(context, Class.forName(activity));
        } 
        catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
        context.startActivity(intent);
    }
}

模型应该返回没有类关键字的类名。例如:-Main2Activity

【讨论】:

  • 我试过了,但它给了我这个错误'尝试在空对象引用上调用虚拟方法'boolean android.content.Intent.migrateExtraStreamToClipData()'
  • 请发送模型以及您在数组列表中添加的数据类型@SlavictheSlavic
  • 我只是将 4 个字符串的数组列表发送到我的 ListAdapter。我还必须将您的“arrayList”更改为“activityList”,我相信这就是您的意思。
  • 您的数组列表必须是对象类型。您还可以提及您传递给列表的字符串吗?
  • 啊,好吧。我只是传递了(“一”、“二”、“三”、“四”)简单的测试字符串
猜你喜欢
  • 2018-05-24
  • 2015-01-14
  • 1970-01-01
  • 1970-01-01
  • 2021-11-20
  • 1970-01-01
  • 2018-04-06
  • 2020-08-04
  • 2018-07-09
相关资源
最近更新 更多