所以我有一个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);
}
不太确定为什么第一段代码不起作用。任何帮助将不胜感激。
答案 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