2014-06-13 32 views
14

gönderilemedi. Güncel uygulama sürümümüzde, otto'dan EventHandler ile ilgili bir sorun var.RuntimeException: event @ otto

"Sebep: java.lang.RuntimeException: olay gönderilmez Could: classcom.nameOfBrand.ui.events.SwitchFragmentEvent işleyicisi [EventHandler Aşağıdaki bilgi ile, bizim çarpışma günlüğüne bir RuntimeException olsun public void com.nameOfBrand.ui.activities.MainActivity.onSwitchFragmentEvent (com.nameOfBrand.ui.events.SwitchFragmentEvent)]"

Biz bir düğme var ve OnClickListener biz ateş bir kendinden tanımlı SwitchFragmentEvent. Bazı garip durumlarda, çerçeve olayı gönderemez ve bir RuntimeException atar.

Düğmeyle olan parça AbstractResultListFragment'u genişletir ve bu, AbstractFragment'u uzatır. EventBus'u AbstractResume of AbstractFragement'e kaydeder ve onPause'da kaydettiririz. Bu tek düğme hariç her şey iyi çalışıyor:/

Böyle bir şeyle ilgili bir fikri olan veya hiç bir şey yapmayan var mı?

GÜNCELLEME: Scompt haklıydı. RuntimeException kodumuzda bir NullPointerException neden otto atıldı. Thx

Tipp: sonuna kadar çarpışma günlükleri oku;)

+1

Kural dışı durumdan ek bilgileriniz var mı? Bu noktada sarılmış bir istisna var (https://github.com/square/otto/blob/master/otto/src/main/java/com/squareup/otto/Bus.java#L386). –

+0

Oh, anlıyorum! Çöküntüde şimdiye kadar kayma yok. Benim durumumda bu bir NullPointer ve söylediğin gibi, bu RuntimeException içine çerçeveden sarılmış. Teşekkürler – iFoukis

+0

@ scompt.com Sarılmış bir özel durumum yok. Etkinliğimde, aktivitie'nin görüntüleyicimdeki bir parçanın etkinliği alması beklenen bir '@ Produce' yöntemine sahibim. Ancak uygulama istisna ile çatışıyor –

cevap

7

Orada should be kazası hakkında daha fazla bilgi sağlayacaktır o noktada bir sarılmış istisna.

+1

Bu ** korumalı ** yöntemini nasıl kullanmanız gerekiyor? void dispatch (Object olayı, EventHandler wrapper) "? –

+0

Bu nasıl bir çözüm olabilir? bir şeyi çözmeyen üçüncü parti yöntemiyle bağlantı kuruyor mu? Bu sorunu daha gelişmiş ve açık bir açıklama ile çözmem gerekiyor! – blueware

1

AndroidAnnotation ile birlikte kullanıyorsanız, tedavi yöntemini görüntülemek için @UiThread ekleyin. Yöntemin private olmamasına dikkat edin.

+0

Tedavi yöntemini görüntüle ne demek istiyorsun? –

+0

@IgorGanapolsky // Görünümleri değiştirmek için bir yöntem kastediyorum. – Youngjae