Android GreenRobot的事件总线总是返回NullPointerException
我不确定这个库是怎么回事,但结果总是不一致——至少对我来说是这样 我有ActivityA,ActivityB,ActivityB里面有片段B1。我必须将字符串ID从ActivityA传递到ActivityB,FragmentB1。由于ActivityB中还有一些片段也需要这个ID,所以我想为什么不使用EventBus呢。于是,ActivityA成为出版商,ActivityB,FragmentB1成为订户 为事件定义POJOAndroid GreenRobot的事件总线总是返回NullPointerException,android,event-bus,greenrobot-eventbus-3.0,Android,Event Bus,Greenrobot Eventbus 3.0,我不确定这个库是怎么回事,但结果总是不一致——至少对我来说是这样 我有ActivityA,ActivityB,ActivityB里面有片段B1。我必须将字符串ID从ActivityA传递到ActivityB,FragmentB1。由于ActivityB中还有一些片段也需要这个ID,所以我想为什么不使用EventBus呢。于是,ActivityA成为出版商,ActivityB,FragmentB1成为订户 为事件定义POJO public class EventUid { private
public class EventUid {
private final String Uid;
public EventUid(String uid) {
Uid = uid;
}
public String getUid() {
return Uid;
}
}
ActivityA的代码如下所示。选择微调器项目时,将运行以下代码
EventBus.getDefault.postnew EventUidUid
ActivityB,FragmentB1的代码如下所示。首先,我在onStart中注册事件
@Override
public void onStart() {
super.onStart();
EventBus.getDefault().register(this);
}
然后我在onStop中注销事件
@Override
public void onStop() {
EventBus.getDefault().unregister(this);
super.onStop();
}
在订阅事件之前,我在ActivityB和FragmentB1中定义了一个字符串
private String ProductUid;
最后,我在ActivityB和FragmentB1中订阅该事件,如下所示
@Subscribe(threadMode = ThreadMode.MAIN)
public void onEventUid(EventUid event) {
ProductUid = event.getUid();
}
我不确定哪里出了问题,但ActivityB和FragmentB1总是返回NullPointerException。有人能给我指路吗
谢谢
编辑:添加LogCat。
PS:为便于理解而命名的这个问题中的活动、片段名称将不同于LogCat
--------- beginning of crash
06-10 12:44:20.342 3019-3019/blog.deshki.editor E/AndroidRuntime: FATAL EXCEPTION: main
Process: blog.deshki.editor, PID: 3019
java.lang.RuntimeException: Unable to start activity ComponentInfo{blog.deshki.editor/blog.deshki.editor.screens.media.MediaActivity}: java.lang.NullPointerException: Can't pass null for argument 'pathString' in child()
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2416)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476)
at android.app.ActivityThread.-wrap11(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5417)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
Caused by: java.lang.NullPointerException: Can't pass null for argument 'pathString' in child()
at com.google.firebase.database.DatabaseReference.child(Unknown Source)
at blog.deshki.editor.screens.media.MediaActivity.firebaseSettings(MediaActivity.java:291)
at blog.deshki.editor.screens.media.MediaActivity.onCreate_aroundBody0(MediaActivity.java:267)
at blog.deshki.editor.screens.media.MediaActivity$AjcClosure1.run(MediaActivity.java:1)
at org.aspectj.runtime.reflect.JoinPointImpl.proceed(JoinPointImpl.java:149)
at com.frogermcs.androiddevmetrics.aspect.ActivityLifecycleAnalyzer.executeWithTracingIfEnabled(ActivityLifecycleAnalyzer.java:88)
at com.frogermcs.androiddevmetrics.aspect.ActivityLifecycleAnalyzer.ajc$inlineAccessMethod$com_frogermcs_androiddevmetrics_aspect_ActivityLifecycleAnalyzer$com_frogermcs_androiddevmetrics_aspect_ActivityLifecycleAnalyzer$executeWithTracingIfEnabled(ActivityLifecycleAnalyzer.java:1)
at com.frogermcs.androiddevmetrics.aspect.ActivityLifecycleAnalyzer.logAndExecute(ActivityLifecycleAnalyzer.java:66)
at blog.deshki.editor.screens.media.MediaActivity.onCreate(MediaActivity.java:262)
at android.app.Activity.performCreate(Activity.java:6237)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1107)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2369)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476)
at android.app.ActivityThread.-wrap11(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5417)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
06-10 12:44:20.358 1279-2221/? E/SurfaceFlinger: ro.sf.lcd_density must be defined as a build property
@添加了cricket_007 LogCat。请注意,活动和片段名称可能不同,但如果活动A在监听活动B,而活动B在前台,则与EventBus相关的代码完全是逐行的;实际上,活动A在后台时停止,因此它不在听。对于这种情况,EventBus是一个错误的选择。你为什么不开始执行TractivityForresult?@EugenPechanec我只想将数据从第一个活动传递到第二个活动我也可以将数据从第一个活动传递到第二个活动中的片段。第一个活动未侦听第二个活动的数据。为什么我需要StartActivityForresultFirebase代码在哪里?如果问题出现在MediaActivity中,请显示它。请看一看a