从bundle获取String时出现“readBundle:bad magic number”错误

时间:2013-11-29 06:14:59

标签: android android-intent android-broadcast

我将意图中的包从一个类传递到另一个类。但是在收到它时我得到的错误就像是“readBundle:bad magic number”。这是一段代码片段

从A组传递捆绑包:

  Intent intent  = new Intent();
  Bundle b1=new Bundle();
  b1.putString("STORE_STATUS", "true");
  b1.putParcelableArrayList("ParticularStoreInfo", particularStoreInfoArr);
  intent.putExtra("BundleData", b1);
  intent.setAction(Tag);
  context.sendBroadcast(intent);

在B级接收它:

bundle = intent.getBundleExtra("BundleData");
if(bundle!=null){
String SEARCH_STATUS = bundle.getString("STORE_STATUS");// error on this line
if(SEARCH_STATUS.equalsIgnoreCase("true")){  


}

2 个答案:

答案 0 :(得分:1)

试试这个:

Bundle bundle = getIntent().getExtras();
  if (bundle  != null) {
 String SEARCH_STATUS = bundle.getString("STORE_STATUS");
   if (datas!= null) {
        // do stuff
   }  

已编辑:

要将数据发送到活动,请使用此:

Intent intent = new Intent();
intent.putExtra("STORE_STATUS", "SOME DATAS");

回答您的问题:

要使用Bundle与Intent一起发送数据,您必须使用它:

Intent mIntent = new Intent(this, Example.class);
Bundle mBundle = new Bundle();
mBundle.extras.putString(key, value);
mIntent.putExtras(mBundle);

答案 1 :(得分:0)

  

意图从一个组件发送到另一个组件(不在两个类之间)   一般来说)。假设B是广播接收器(你已经使用过   sendBroadcast)和A作为发送者,B必须接收后的意图   sendBroadcast()。

     

您使用过putExtra,putString和putParceableArrayList。所以关于   接收方,尝试使用getExtra,getString和   getParceableArrayList。

     

如果您尝试在接收方法上使用intent的包   没有意图作为参数,你可以使用getIntent()..

     

如果您对此答案感到困惑,请发布您的完整或   您要解析的示例代码,否则忽略。