【问题标题】:intent bundle variables not being passed between activities未在活动之间传递意图包变量
【发布时间】:2013-11-21 16:09:46
【问题描述】:

mActivity.this我设置了一个意图和一个包

Intent intent = new Intent(mActivity.this, nextActivity.class);
        Bundle mBundleNow = new Bundle();
        mBundleNow.putString("formattedAddress", formattedAddress);
        mBundleNow.putDouble("latitude", latitude);
        mBundleNow.putDouble("longitude", longitude);
        mBundleNow.putString("newRequest", ""); //should probably be bool
        intent.putExtras(mBundleNow);

当我运行 startActivity(intent) 时,intent 和 bundle map 被填充。

nextActivity.classonCreate方法中,getIntent().getExtras()不为null,但是没有map,我设置的变量都不存在。

这是怎么回事?以及如何正确包含我的意图变量

【问题讨论】:

  • 请发布下一个活动的 onCreate() 方法。

标签: android android-intent android-activity bundle oncreate


【解决方案1】:

换成捆绑包,试试这个:

intent.putExtra("varName", varValue);

【讨论】:

  • getIntent().getExtras() 映射仍然为空,因此没有我的变量
  • 在您的原始帖子中,您说“getIntent().getExtras() 不为空”。哪个是真的?
  • @MikeM。它不为空。 getExtras() 包含一个映射,映射为空,这意味着我设置的键/值对不存在
  • 另外,根据@William Bertan 的建议,在检索使用 putExtra() 方法附加的值时,您将使用 getStringExtra() 和 getDoubleExtra() 方法。
  • getExtras() 返回一个 Bundle。使用该 Bundle,您将使用 getString() 和 getDouble() 方法。如果您将发布您的 onCreate() 方法,我们可以帮助您解决问题。
【解决方案2】:

使用您的 exact bundle data 一行一行,我成功地检索了纬度:

double myLat = getIntent().getExtras().getDouble("latitude");

Log.d("Lat is: ", ": " + String.valueOf(myLat));

在 NextActivity 的 onCreate 中完全尝试此代码,如果它不起作用,则说明其他东西出了问题,而不是传递额外的东西,因为它在这里工作正常。

如果这对您不起作用,请尝试发布您的 NextActivity 的 onCreate 代码,我将编辑我的答案以反映新信息

【讨论】:

  • 是的,还有其他事情发生了,你知道有什么可能性吗?也许清单中的活动标志可以改变事情?
  • @CQM 你确定你输入的数据,也就是纬度,肯定有数据吗?尝试硬编码值(我尝试了 2.2)
猜你喜欢
  • 2013-08-01
  • 2011-10-06
  • 1970-01-01
  • 1970-01-01
  • 2021-04-12
  • 1970-01-01
  • 2012-02-05
  • 2017-08-05
相关资源
最近更新 更多