【问题标题】:Application crashed when I tried to get value from other activity, why?当我试图从其他活动中获取价值时,应用程序崩溃了,为什么?
【发布时间】:2017-04-13 15:25:03
【问题描述】:

因此,在一个 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()));

【问题讨论】:

    标签: java android class arraylist get


    【解决方案1】:

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

    小伙伴们,

    【讨论】:

    • Ey Rob,zal ik de class van 'alleDeelnemers' erbij zetten? Dan snap je het mischien 更好。 Ik zal nu 是 'GetContext()' 探针。
    • Maar 'GetContext()' wordt rood bij mij. Ik weet ook niet precies hoe ik dat moet gebruiken。
    • 我建议作为一个友好的建议,尝试用英语编写代码 :) 并在 SO 上说英语 :) Met vriendelijke groeten
    【解决方案2】:

    首先,你不能(至少我不知道任何方式)只是从另一个活动中获取一个变量,当你在你的设置活动中定义它时,你的范围就是那个活动。当您想将值传递给另一个活动时,您可以通过不同的线程将它们链接起来,例如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/

    【讨论】:

    • 我已经知道了,抱歉。我只是想做很多事情,我已经知道 AsyncTask 但我不能使用那个方法。
    • 我不知道如何在 Extras 中添加我的数组
    • 不知道你的数组里有什么,你也许可以把它压缩成一个可序列化的额外或一大堆字符串额外。您还可以考虑扩展您的应用程序类,我更新了我的答案。
    • 等等,我说我不能使用 AsyncTask,但我想我可以。也许我知道一个解决方案,所以明天我将尝试使用 AsyncTask。
    • 我得到了一个有很多 set 和 get(int 和 string)的类。在 for 循环中,我将值添加到类中,并将该类添加到数组中。
    猜你喜欢
    • 2021-08-24
    • 2016-01-11
    • 1970-01-01
    • 2015-09-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-05
    • 1970-01-01
    相关资源
    最近更新 更多