所以在一个Activity中我在一个类中设置了一个ArrayList,在另一个Activity中我想要获取ArrayList,但是当我尝试获取这些信息时,应用程序崩溃了。
错误:
致命的例外:主要 处理:com.example.sander.onzeoptocht,PID:3749 java.lang.RuntimeException:无法启动活动ComponentInfo {com.example.sander.onzeoptocht / com.example.sander .... t.deelnemer}:java.lang.ClassCastException:android.support.multidex.MultiDexApplication无法强制转换com.example.sander .... mDataObject.deelnemerInfo
设置活动:
ArrayList<alleDeelnemers> deelnemers = new ArrayList<>();
//deelnemer is a class with ID and some strings.
deelnemers.add(deelnemer);
//set arraylist in class
deelnemerInfo info = new deelnemerInfo();
info.setDeelnemerGegevens(deelnemers);
类别:
public class deelnemerInfo extends Application {
ArrayList<alleDeelnemers> deelnemerGegevens;
public ArrayList<alleDeelnemers> getDeelnemerGegevens() {
return deelnemerGegevens;
}
public void setDeelnemerGegevens(ArrayList<alleDeelnemers> deelnemerGegevens) {
this.deelnemerGegevens = deelnemerGegevens;
}
获取活动:
deelnemerInfo info = ((deelnemerInfo)getApplicationContext());
Log.e("test", String.valueOf(info.getDeelnemerGegevens().get(0).getAantalvolgnummer()));
答案 0 :(得分:0)
可能是getApplicationContext()
返回整个应用程序的上下文,而不仅仅是您的活动吗?尝试使用GetContext()
。此外,您的ArrayList的类型是alleDeelnemers,这对我来说很奇怪。
groetjes,
答案 1 :(得分:0)
首先,你不能(至少我不知道任何方式)从另一个活动中获取变量,当你在你的set活动中定义它时,你的范围就是那个活动。当您想要将值传递到另一个活动时,您可以通过不同的线程将它们链接起来,例如AsyncTask
或您将其作为附加内容传递。
其次,我不太明白你想如何通过设置getApplicationContext()
来获得你的delmeneerInfo。这不会返回您在之前的活动中设置的任何变量,而是返回它所说的应用程序上下文。您的错误消息所显示的内容无法投放到您的班级:android.support.multidex.MultiDexApplication cannot be cast to com.example.sander....mDataObject.deelnemerInfo
您还可以尝试使用自己的应用程序类扩展来创建类似全局变量的内容,请查看此处:https://www.mobomo.com/2011/05/how-to-use-application-object-of-android/