有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

当我试图从其他活动中获取价值时,java应用程序崩溃了,为什么?

因此,在一个活动中,我在一个类中设置了一个ArrayList,在另一个活动中,我想获取ArrayList,但当我试图获取这些信息时,应用程序正在崩溃

错误:

FATAL EXCEPTION: main Process: com.example.sander.onzeoptocht, PID: 3749 java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.sander.onzeoptocht/com.example.sander....t.deelnemer}: java.lang.ClassCastException: 安卓.support.multidex.MultiDexApplication cannot be cast to 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()));

共 (2) 个答案

  1. # 1 楼答案

    会不会是getApplicationContext()返回整个应用程序的上下文,而不仅仅是您的活动?尝试使用GetContext()。此外,你的ArrayList类型是alleDeelnemers,这对我来说有点奇怪

    格罗杰斯

  2. # 2 楼答案

    首先,你不能(至少我不知道任何方式)仅仅从另一个活动中获取变量,当你在你的设置活动中定义它时,你的范围就是那个活动。当你想将一个值传递到另一个活动中时,你可以通过不同的线程将它们链接起来,例如AsyncTask,或者将它们作为额外的传递

    其次,我不太明白如何通过设置getApplicationContext()来获取DelmeneInfo。这不会返回您在之前的活动中设置的任何变量,而是返回它所说的应用程序上下文。您的错误消息显示,无法将其转换到您的类: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/