安卓中的意图(Intent)

3
我想要澄清一下关于意图的问题。这是我的情况,我的项目中有3个活动,分别是"A"、"B"和"C"。
在Activity "A"中点击按钮后,我通过bundle将值传递给"B",然后根据接收到的值从数据库中检索出一组值...同样的,"B"->"C"也是如此...
问题是当我在"C"中点击返回按钮时,它不会继续前往"B",而是抛出一个错误。同样的,"B"到"A"也是如此...
我发现原因是当从"C"中点击返回按钮时,"B"无法从bundle中获取值。
希望你能理解。有什么解决方法吗?
提前感谢。

除了一些代码之外,当按下返回键时抛出什么错误,告诉我们会非常有用。 - Felix
当你按返回键时,你的活动会从“OnCreate”方法重新开始,并且不会获得值,因此很明显会抛出空指针异常。 - jigar
2个回答

0

你说的没错,bundle获取到了null值,所以你需要防止这些null值, 比如先检查bundle的值是否不等于null,然后再进行设置

Intent myintent = getIntent();
if (null != myintent.getExtras()) {
    // do your work here
    String Name = myintent.getExtras().getString("Name");
} else {
    // not here you can't get values
    // so getting force close here
    Toast.makeText(getApplicationContext(), "No Recor Here..", 12).show();
}

0
尝试使用startActivityForResult启动我们的活动,并使用setResult(int)将结果从活动C发送回B

你还需要检查结果代码是否等于RESULT_OK(-1),因为当按下返回键之前,它将是RESULT_CANCELED(0),在尝试从Intent中检索额外信息之前。为了确保安全,请再次检查Intent不为空。并且在返回时,你需要使用setResult(int ResultCode,Intent data),而不仅仅是setResult(int Result Code)。 - NickT
检索和额外内容,请阅读“检索任何额外内容”。 - NickT

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接