gpt4 book ai didi

java - 尝试在空对象引用上调用虚拟方法 'java.lang.String[] android.os.Bundle.getStringArray(java.lang.String)'

转载 作者:行者123 更新时间:2023-12-01 22:28:30 25 4
gpt4 key购买 nike

我需要将 long[] 从 Activity 传递到 IntentService。创建了一个Bundle,将数组存储在Bundle中,然后将Bundle添加到Intent中。在 IntentService 中,当我尝试提取 Bundle 时,我得到:java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法“java.lang.String[] android.os.Bundle.getStringArray(java.lang.String)”。 正如您所看到的,我已经尝试过使用 long[] 和 String[],并且都以相同的方式出现错误。

在 Activity 中

String[] sAr = {"some", "times"};
// launch simulator threads using test parameters
Intent inStartSim = new Intent(this, SimService.class);
//inStartSim.setAction("TrigParm");
inStartSim.setAction("genData");
Bundle simBundle = new Bundle();
//simBundle.putByteArray(arSimConfig);
//simBundle.putLongArray("simConfigAr",arSim1Config);
simBundle.putStringArray("simConfigAr",sAr);
inStartSim.putExtras(simBundle);
startService(inStartSim);

在 IntentService 中

Bundle simBundle = intent.getBundleExtra("simBundle");
long[] simConfigParm;
String[] sAr;
//simConfigParm = simBundle.getLongArray("simConfigAr");
sAr = simBundle.getStringArray("simConfigAr");

在异常发生后深入研究 Bundle 对象时,我确实注意到标识符不同:

Bundle[{simConfigAr=[J@5668b8a}] – in Simulator
Bundle[{simConfigAr=[J@f0d80de}] – in SimService

我知道还有很多其他方法可以在 Activity 和服务之间移动数据,但这似乎是最简单的。 http://developer.android.com/guide/faq/framework.html#3 - 其他技术的良好起点。

最佳答案

您需要从您放入的 bundle 中获取值

解决方案1

在您的 Intent 服务中更改此设置

Bundle simBundle = intent.getBundleExtra("simBundle");

Bundle simBundle = intent.getExtras();

解决方案 2 如果您也将其他 Activity 的额外值发送到同一服务,则这是首选方案

在您的 Activity 中更改此设置

inStartSim.putExtras(simBundle);

inStartSim.putExtra("simBundle", simBundle)

关于java - 尝试在空对象引用上调用虚拟方法 'java.lang.String[] android.os.Bundle.getStringArray(java.lang.String)',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28239763/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com