2013-11-29 5 views
2

Я передаю связку внутри намерения от одного класса к другому. Но, получая его, я получаю сообщение об ошибке «readBundle: bad magic number». Вот фрагмент кодаОшибка «readBundle: bad magic number» при получении строки из пакета

Передача сверток из класса А:

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); 

Receveing ​​его в классе B:

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


} 

ответ

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 mIntent = new Intent(this, Example.class); 
Bundle mBundle = new Bundle(); 
mBundle.extras.putString(key, value); 
mIntent.putExtras(mBundle); 
+0

Я сделал что-то подобное .. похоже на ваше предложение Пакет пучков = getIntent(). GetExtras(); if (bundle! = Null) { String SEARCH_STATUS = bundle.getString ("STORE_STATUS"); if (SEARCH_STATUS! = Null) { // делать нужный файл }, а теперь получить исключение null-указателя на SEARCH_STATUS –

+0

см. Мою отредактированную часть. – Avijit

+0

Теперь он работает, но почему это происходит, когда я отправляю какой-либо объект parceble внутри пакета, он получает null на приемнике. –

0

Задания отправляются с одного компонента на другой (не между двумя классами в целом). Предполагая, что B является широковещательным приемником (вы использовали sendBroadcast) и A в качестве отправителя, B должен получить намерение после sendBroadcast().

Вы использовали putExtra, putString и putParceableArrayList. Поэтому на принимающей стороне попробуйте использовать getExtra, getString и getParceableArrayList.

Если вы пытаетесь использовать связку Намерения по методу приемника, который не имеет никакого намерения в качестве параметра, вы можете использовать getIntent() ..

Если вы запутались этим ответом, пожалуйста, напишите ваше полное или образец кода, который вы хотите решить, иначе игнорировать.

Смежные вопросы