Dagger 2,Android 7.0 - 应用程序实例或组件为空

时间:2017-10-12 08:25:22

标签: android dagger-2

我从Play商店收到许多使用Android 7.0和7.1(没有其他版本)的设备的崩溃报告,我无法在任何7.x设备(和模拟器)上重现这些报告。

崩溃:

java.lang.RuntimeException: 
  at android.app.ActivityThread.performLaunchActivity (ActivityThread.java:2659)
  at android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:2724)
  at android.app.ActivityThread.-wrap12 (ActivityThread.java)
  at android.app.ActivityThread$H.handleMessage (ActivityThread.java:1473)
  at android.os.Handler.dispatchMessage (Handler.java:102)
  at android.os.Looper.loop (Looper.java:154)
  at android.app.ActivityThread.main (ActivityThread.java:6123)
  at java.lang.reflect.Method.invoke (Method.java)
  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run (ZygoteInit.java:867)
  at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:757)
Caused by: java.lang.NullPointerException: 
  at com.package.de.ui.base.BaseActivity.onCreate (BaseActivity.java:53)
  at com.package.de.ui.startup.StartupActivity.onCreate (StartupActivity.java:26)
  at android.app.Activity.performCreate (Activity.java:6672)
  at android.app.Instrumentation.callActivityOnCreate (Instrumentation.java:1140)
  at android.app.ActivityThread.performLaunchActivity (ActivityThread.java:2612)

到目前为止一直很好 - 一个简单的NullPointer异常,但遗憾的是它不那么简单。 (至少对我来说)

我继承StartUpActivity的{​​{1}}如下所示:

BaseActivity

这里也没什么特别的。

public class StartupActivity extends BaseActivity implements StartupView { private StartupComponent startupComponent; @Inject StartupPresenter startupPresenter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setupComponent(MyApplication.get().getAppComponent()); <- Crash setContentView(R.layout.activity_startup); startupPresenter.bindView(this); } public void setupComponent(AppComponent appComponent) { startupComponent = DaggerStartupComponent.builder() .appComponent(appComponent) .startupModule(new StartupModule()) .build(); startupComponent.inject(this); }

BaseActivity:

所以我有一个public abstract class BaseActivity extends AppCompatActivity { @Inject protected UserSessionManager userSessionManager; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); MyApplication.get().getAppComponent().inject(this); <- Crash } ,会被注入BaseActivity

最后是AppComponent类:

Application

我知道这是很多代码,但我想确保您拥有所需的所有信息。 对于有关Dagger2设置的任何建议,我会非常高兴。必须有一些问题,但我无法弄清楚。

修改 如果有人遇到这个问题。看看这里:RuntimeException with Dagger 2 on Android 7.0 and Samsung devices 这可能是您的解决方案。

0 个答案:

没有答案
相关问题