使用ArrayList创建意图

时间:2018-07-24 18:41:33

标签: android android-intent arraylist start-activity

所以我有一个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);
}

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

2 个答案:

答案 0 :(得分:1)

您需要将 Class 类型作为您使用的Intent的第二个参数传递

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

在这种情况下,您将需要List<Class>之类的

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

像这样使用它:

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

我建议将您的List<String>更改为List<Class>

答案 1 :(得分:0)

最简单的方法是将String转换为class。这是执行此操作的代码-

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);
    }
}

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